本章讲解C++标准程序库中的通用工具。它们是由短小精干的类和函数构成。

 

 

Pairs(对组)

class pair可以将两个值视为一个单元。STL内多处使用了pair。尤其容器map和multimap,就是使用pairs来管理key/value的成对元素。

struct pair定义与<utility>:

namespace std{
    template <class T1,class T2>
    struct pair{
        //type names for the values
        typedef T1 first_type;
        typedef T2 second_type;

        //member     
        T1 first;
        T2 second;
 
        //default constructor
        pair():first(T1()),second(T2()) {}

        //constructor for two values
        pair(cosnt T1&a,const T2& b):first(a),second(b) {}
      
        //copy constructor with implicit conversions
        template<class U,class V>
        pair(const pair<U,V>& p):first(p.first),second(p.second) {}
    };
    //comparisons
    template<class T1,class T2>
    bool operator==(const pair<T1,T2>&,const pair<T1,T2>&);
    template<class T1,class T2>
    bool operator<(const pair<T1,T2>&,const pair<T1,T2>&);
    ...
    //convenience function to create a pair
    template<class T1,class T2>
    pair<T1,T2> make_pair(const T1&,const T2&);
}
View Code

相关文章: