• Операторы (Operators)
  • Пара (Pair)
  • Основные компоненты

    Этот раздел содержит некоторые основные шаблонные функции и классы, которые используются в остальной части библиотеки.

    Операторы (Operators)

    Чтобы избежать избыточных определений 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);

    }

    Пара (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);

    }








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх