pair的应用
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
pair的定义 (头文件为utility)
template <class T1, class T2> struct pair;
This class couples together a pair of values, which may be of different types (T1 and T2). The individual values can be accessed through the public members first and second.
pair的初始化
pair<T1,T2> p1; create an empty pair with two elems of types t1 an t2.the elem are value_initialized.
pair<T1,T2> p1(v1,v2)
想要定义多个pair类型时,可以用typedef简化
typedef pair<string,string> Author;
Author proust("marcel","prouse");
Author joyce("james","joy");
pair的相关操作
make_pair(v1,v2) create a new pair from the values v1,v2 . the type of the pair is inferred from the typed of v1
and v2
p.first return the public data member of p named first
p.second
p1<p2 less than between two pair objects .less than is defined as dictionary ordering.return true if p1.first<
p2.first or if !(p2.first<p1.first)&&p1.second<p2.second.
pair<string,string> next_auth;
string first,last;
while(cin>first>>last)
{
//generate a pair from first an last
next_auth=make_pair(first,last);
}
因为pair的数据成员是public,可以直接这么做:
pair<string,string> next_auth;
while(cin>>next_auth.first>>next_auth.second)
{
}