1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
template< typename Iter1, typename Iter2 >
std::pair< Iter1, Iter2 > find_first_difference( Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2 ) {
for( ; first1 != last1 && first2 != last2; ++first1, ++ first2 )
if( *first1 != *first2 )
return std::pair<Iter1, Iter2>( first1, first2 );
return std::pair<Iter1, Iter2>( first1, first2 );
}
template< typename Iter1, typename Iter2, typename Comparator >
std::pair< Iter1, Iter2 > find_first_difference( Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, Comparator comp ) {
for( ; first1 != last1 && first2 != last2; ++first1, ++ first2 )
if( !comp( *first1, *first2 ) )
return std::pair<Iter1, Iter2>( first1, first2 );
return std::pair<Iter1, Iter2>( first1, first2 );
}
// Then:
std::vector<int> v; // Assume filled out
std::set<int> s; // Assume filled out
std::pair< std::vector<int>::iterator, std::set<int>::iterator > result =
find_first_difference( v.begin(), v.end(), s.begin(), s.end() );
if( result.first == v.end() && result.second == s.end() )
std::cout << "Containers are the same" << std::endl;
| |