|
|
[ Назад ] [ Содержание ] [ Вперед ]
Этот раздел содержит некоторые основные шаблонные функции и классы, которые используются в остальной части библиотеки.
Чтобы избежать избыточных определений operator!= из operator== и operator>, <=, >= из operator<, библиотека обеспечивает следующее:
template <class Tl, class T2> inline bool operator!=(const T1& x, const T2& y) { return !(x == y); } template <class Tl, class T2> inline bool operator>(const T1& x, const T2& y) { return y < x; } template <class Tl, class T2> inline bool operator<=(const T1& x, const T2& y) { return !(y < x); } template <class Tl, class T2> inline bool operator>=(const T1& x, const T2& y) { return !(x < y); }
Библиотека включает шаблоны для разнородных пар значений.
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);
[ Назад ] [ Содержание ] [ Вперед ]