Пара (Pair)

Пара (Pair)

Библиотека включает шаблоны для разнородных пар значений.

template ‹class T1, class T2›

struct pair {

 T1 first;

 T2 second;

 pair() {}

 pair(const T1& x, const T2& y): first(x), second(y) {}

};

template ‹class T1, class T2›

inline bool operator==(const pair‹Tl,T2›& x, const pair‹Tl,T2›& y) {

 return x.first == y.first && x.second == y.second;

}

template ‹class T1, class T2›

inline bool operator‹(const pair‹Tl,T2›& x, const pair‹Tl,T2›& y) {

 return x.first ‹ y.first || (!(y.first ‹ x.first) && x.second ‹ y.second);

}

Библиотека обеспечивает соответствующую шаблонную функцию make_pair, чтобы упростить конструкцию пар. Вместо выражения, например:

return pair‹int, double›(5, 3.1415926); // явные типы,

можно написать

return make_pair(5, 3.1415926); // типы выводятся.

template ‹class Tl, class T2›

inline pair‹Tl,T2› make_pair(const T1& x, const T2& y) {

 return pair‹Tl,T2›(x, y);

}