Глава 18. Классы-контейнеры_____________________________477

найдена пара неравных элементов или найдены элементы, для которых функция binary_pred(firstl+i, first2+i) возвращает false, тогда в объекте pair возвращаются итераторы, указывающие на эти два элемента. Класс pair — это механизм библиотеки STL, позволяющий возвращать в функцию два объекта возможно различных типов. Определение класса-шаблона pair:

template <class Inputlteratorl, class Inputlterator2> pair<lnputlteratorl, Inputlterator2> mismatch(Inputlteratorl firsti, Inputlteratorl. lasti, Inputlterator2 first2);

template <class Inputlteratorl, class Inputlterator2,

class BinaryPredicate>

pair<lnputlteratorl, Inputlterator2> mismatch(Inputlteratorl firsti, . Inputlteratorl lasti, 'Inputlterator2 first2, BinaryPredicate

binary_pred);

*

template <class Tl, class T2>

struct pair

(

Tl first;

T2 second;

pair(const T1& a, const T2& b) : first(a), second(b) {} 1;

Пример Использования mismatch И pair:

pair<char*, char> result = mismatch(strl,strl+10, str2);

if (result.first == strl+10)

cout « "Несовпадение найдено: " « "*result.first !== *result.second.\n";

else

cout « "Первые девять символов в двух строках равны.\п";

Если несовпадение не найдено, возвращается итератор pair (lasti, first2+(lastl-firstl)).

equal. Алгоритм equal проверяет две входные последовательности на равенство. Равенство определяется операцией == или истинностью функции binary_pred. Алгоритм противоположен mismath за исключением того, что возвращается переменная типа bool". Если не найдено ни одного расхождения, возвращается истина, в противном случае — ложь.

template <class Inputlteratorl, class Inputlterator2> bool equal (Inputlteratorl firsti, Inputlteratorl lasti, Inputlterator2 first2);

template <class Inputlteratorl, class Inputlterator2, class BinaryPredicate>