pair 实质上是一个结构体, 其主要的两个成员变量是 first 和 second, 这两个变量可以直接使用.
1 pair 的应用
pair 是将 2 个数据组合成一个数据, 当需要这样的需求时就可以使用 pair.
(1)STL 中的 map 就是将 key 和 value 放在一起来保存.
(2) 另一个应用是, 当一个函数需要返回 2 个数据的时候, 可以选择 pair.
2: 初始化
初始化一个 pair 可以使用构造函数, 也可以使用 std::make_pair 函数, make_pair 函数的定义如下:
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
1,pair 的创建和初始化
pair 包含两个数值, 与容器一样, pair 也是一种模板类型. 但是又与之前介绍的容器不同, 在创建 pair 对象时, 必须提供两个类型名, 两个对应的类型名的类型不必相同
- pair<string,string>anon;
- pair<string,int>word_count;
- pair<string, vector<int>>line;
当然也可以在定义时为每个成员提供初始化式:
pair<string,string>author("James","Joy");
pair 类型的使用相当的繁琐, 如果定义多个相同的 pair 类型对象, 可以使用 typedef 简化声明:
- typedef pair<string,string> Author;
- Author proust("March","Proust");
- Author Joy("James","Joy");
2,pair 对象的操作
对于 pair 类, 可以直接访问其数据成员: 其成员都是公有的, 分别命名为 first 和 second, 只需要使用普通的点操作符
- string firstBook;
- if(author.first=="James" && author.second=="Joy")
- firstBook="Stephen Hero";
3, 生成新的 pair 对象
除了构造函数, 标准库还定义了一个 make_pair 函数, 由传递给它的两个实参生成一个新的 pair 对象
- pair<string, string> next_auth;
- string first,last;
- while(cin>>first>>last) {
- next_auth=make_pair(first,last);
- //...
- }
还可以用下列等价的更复杂的操作:
next_auth=pair<string,string>(first,last);
由于 pair 的数据成员是公有的, 因而可如下直接地读取输入:
- pair<string, string> next_auth;
- while(cin>>next_auth.first>>next_auth.last) {
- //...
- }
来源: http://www.bubuko.com/infodetail-3037338.html