На этом шаге мы рассмотрим один из способов реализации сравнения пар.
Для сравнения двух пар в стандартную библиотеку C++ включены обычные операторы сравнения. Две пары считаются равными при совпадении отдельных компонентов:
namespace std { template <class T1, class T2> bool operator << (const pair<T1,T2>& x, const pair<T1,T2>& y) { return x.first == y.first && x.second = y.second; } }
При сравнении пар первый компонент обладает более высоким приоритетом. Если первые компоненты пар различны, то результат их сравнения (больше или меньше) определяет результат сравнения для пар в целом. Если первые компоненты равны, то результат сравнения пар определяется сравнением вторых компонентов:
namespace std { template <class T1, class T2> bool operator< (const pair<T1,T2>& x, const pair<T1,.T2>& y) { return x.first < y.first || (!(y.first <x.first) && x.second < y.second); } }
Остальные операторы сравнения определяются аналогично.
На следующем шаге мы рассмотрим функцию make_pair.