pair介绍
之前的文章提到了关联容器C++学习----关联容器-优快云博客。
今天要学习关联容器的操作,不过在学习操作之前要学习一下容器内部的模板类pair类型。
标准库类型pair,定义 在头文件utility,pair是一个用来生成特定类型的模板,类似容器,我们需要提供两个类型名,这两个可以不一样。比如
pair<string,string> anon; //保存两个string
pair<string,size_t> word_count; //保存一个string和一个size_t
pair<string,vector<int>> line; //保存string和vector<int>
pair就是map这些关联容器的元素,比如
cout<<w.first<<"occurs"<<w.second
<<((w.second>1)?"times":"time"<<endl;
这里w是指向map某个元素的引用。map的元素就是pair。
pair<T1,T2> p; | pair的初始化 |
pair<T1,T2>p(v1,v2) | |
pair<T1,T2>p={v1,v2} | |
make_pair(v1,v2) | 返回一个v1,v2初始化的pair |
p.first | p的first的数据成员 |
p.second | p的second的数据成员 |
p1 relop p2 | 关系运算符(<,>,<=,>=)按字典序定义:这意味着首先比较 pair 的第一个元素;如果第一个元素相等,则比较第二个元素 |
p1==p2 | 当first和second都相等的时候,pair相等 |
p1!=p2 |
创建一个pair类型的函数
#include<iostream>
#include<utility>
#include<vector>
#include<string>
using namespace std;
pair<string,int> process(vector<string> &v){
if(!v.empty()){
return {v.back(),v.back().size()};//列表初始化
}else{
return pair<string,int>();//直接构造一个pair对象,隐式转换
}
}
int main(){
vector<string> v{"hello","world"};
auto p=process(v);
cout<<p.first<<" "<<p.second<<endl;
return 0;
}
在学习了pair的基础上就可以学习关联容器的操作。