stl.pair用法总结

0 -- 内部类型定义
template <class T1, class T2>
struct pair
{
    typedef T1 first_type;
    typedef T2 second_type;
    T1 first;
    T2 second;
    pair() : first(T1()), second(T2()) {}
    pair(const T1 & a, const T2 & b) : first(a), second(b) {}
    template <class U1, class U2>
    pair(const pair<u1, u2=""> & p) : first(p.first), second(p.second) {}
};
typedef T1 first_type first值域的元素类型
typedef T2 second_type second值域的元素类型
1 -- 构造函数
pair()

默认构造函数,要求T1和T2有默认的构造函数,并同时使用二者默认构造函数来构造容器。
pair(const T1 & a, const T2 & b)

构造pair。容器的first和second元素,分别使用a和b进行构造。
template <class U1, class U2> pair(const pair<u1, u2=""> & p)

构造pair。容器的first和second元素分别使用p.first和p.second进行构造。
2 -- 元素值访问

从pair的定义可知,它是个结构体。所以我们要访问pair容器的值。
只需要直接引用p.first,指代第一个元素;直接引用p.second,指代第二个元素。

3 -- 容器比较函数
template <class T1, class T2>
inline bool operator < (const pair<T1, T2> & x, const pair<T1, T2> & y)

判断容器x是否小于y。该操作先判断x.first < y.first的关系,然后再判断x.second < y.second的关系。所以特别需要注意的是:T1和T2必须支持“<”操作符,否则编译报错。
template <class T1, class T2>
inline bool operator == (const pair<T1, T2> & x, const pair<T1, T2> & y)


判断容器x是否小于y。该操作先判断x.first == y.first的关系,然后再判断x.second == y.second的关系。所以特别需要注意的是:T1和T2必须支持“==”操作符,否则编译报错。
4 -- 容器赋值函数
std::set<T1, T2> x;
x.first  = ....; //给first元素赋值
x.second = ....; //给second元素赋值
            
最简单的赋值方法就是声明变量后,分别引用first和second对其赋值。
template <class T1, class T2>
inline pair<T1, T2> make_pair(const T1 & x, const T2 & y)

该函数是个全局函数,非成员函数。等价于pair<t1, t2="">(x, y),用来生成一个pair变量。我们可以这么使用:
std::set<int, int> a = std::make_pair(1, 2);
posted @ 2009-12-04 22:01  酱油和醋  阅读(4307)  评论(0编辑  收藏  举报