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); |