forked from boostorg/algorithm
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* 
 | |
|    Copyright (c) Marshall Clow 2008-2012.
 | |
| 
 | |
|    Distributed under the Boost Software License, Version 1.0. (See accompanying
 | |
|    file LICENSE10.txt or copy at http://www.boost.org/LICENSE10.txt)
 | |
| */
 | |
| 
 | |
| /// \file  mismatch.hpp
 | |
| /// \brief Find the first mismatched element in a sequence
 | |
| /// \author Marshall Clow
 | |
| 
 | |
| #ifndef BOOST_ALGORITHM_MISMATCH_HPP
 | |
| #define BOOST_ALGORITHM_MISMATCH_HPP
 | |
| 
 | |
| #include <algorithm>    // for std::mismatch
 | |
| #include <utility>      // for std::pair
 | |
| 
 | |
| namespace boost { namespace algorithm {
 | |
| 
 | |
| /// \fn mismatch ( InputIterator1 first1, InputIterator1 last1, 
 | |
| ///                InputIterator2 first2, InputIterator2 last2,
 | |
| ///                BinaryPredicate pred )
 | |
| /// \return a pair of iterators pointing to the first elements in the sequence that do not match
 | |
| /// 
 | |
| /// \param first1    The start of the first range.
 | |
| /// \param last1     One past the end of the first range.
 | |
| /// \param first2    The start of the second range.
 | |
| /// \param last2     One past the end of the second range.
 | |
| /// \param pred      A predicate for comparing the elements of the ranges
 | |
| template <class InputIterator1, class InputIterator2, class BinaryPredicate>
 | |
| std::pair<InputIterator1, InputIterator2> mismatch (
 | |
|                     InputIterator1 first1, InputIterator1 last1,
 | |
|                     InputIterator2 first2, InputIterator2 last2,
 | |
|                     BinaryPredicate pred )
 | |
| {
 | |
|     for (; first1 != last1 && first2 != last2; ++first1, ++first2)
 | |
|         if ( !pred ( *first1, *first2 ))
 | |
|             break;
 | |
|     return std::pair<InputIterator1, InputIterator2>(first1, first2);
 | |
| }
 | |
| 
 | |
| /// \fn mismatch ( InputIterator1 first1, InputIterator1 last1, 
 | |
| ///                InputIterator2 first2, InputIterator2 last2 )
 | |
| /// \return a pair of iterators pointing to the first elements in the sequence that do not match
 | |
| /// 
 | |
| /// \param first1    The start of the first range.
 | |
| /// \param last1     One past the end of the first range.
 | |
| /// \param first2    The start of the second range.
 | |
| /// \param last2     One past the end of the second range.
 | |
| template <class InputIterator1, class InputIterator2>
 | |
| std::pair<InputIterator1, InputIterator2> mismatch (
 | |
|                     InputIterator1 first1, InputIterator1 last1,
 | |
|                     InputIterator2 first2, InputIterator2 last2 )
 | |
| {
 | |
|     for (; first1 != last1 && first2 != last2; ++first1, ++first2)
 | |
|         if ( *first1 != *first2 )
 | |
|             break;
 | |
|     return std::pair<InputIterator1, InputIterator2>(first1, first2);
 | |
| }
 | |
| 
 | |
| //  There are already range-based versions of these.
 | |
| 
 | |
| }} // namespace boost and algorithm
 | |
| 
 | |
| #endif // BOOST_ALGORITHM_MISMATCH_HPP
 |