C++ pair,map,vector简单用法
程序员文章站
2022-07-14 12:30:02
...
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main(){
pair<int,double> p1;
p1 = std::make_pair(1,2.5);
cout<<p1.first<<endl<<p1.second<<endl;
pair<int,float> p2(2,4.56);
cout<<p2.first<<endl<<p2.second<<endl;
vector<int> v1 ;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.pop_back();//删除最后一个元素,返回void
int begin= v1.front();//返回第一个元素的值,不删除
cout<<begin<<endl;
map<int,char> m1 ;
m1[0] = 'a';
m1[1] = 'b';
m1[2] = 'c';
cout<<m1[2]<<endl;
return 0;
}
//1
//2.5
//2
//4.56
//1
//c
//请按任意键继续. . .
pair的常见用法 详解
当想把2个元素绑在一起作为1个合成元素,
又不想因此定义结构体时,
使用pair可以作为1个替代品。
也就是说,pari实际上可以看做是1个内部有2个元素的结构体,
且两个元素的类型是指定的,
如下面代码所示
struct pair{
typeName1 first;
typeName2 second;
};
1.pair的定义
要使用pair,应该添加头文件#include <utility>
,并且在头文件下面加上using namespace std;
由于map的内部实现涉及pair,因此添加map头文件就会自动添加utility头文件,可省略上述步骤
pair有2个参数,分别对应first和second的数据类型,他们可以是任意基本数据类型或容器
pair<typeName1,typeName2> name;
因此,想要定义参数为string和int类型的pair,可以这么写
pair<string,int>
如果想要在定义pair的时候进行初始化,只需要跟上1个小括号,里面填写2个想要初始化的元素即可
pair<string,int> p("haha",5);
如果想要临时建立1个pair
- pair<sting,int>(“haha”,5);
- make_pair(“haha”,5);
2.pair中元素的访问
只有2个元素,分别是first,second,像访问结构体那样去访问即可
pair<string,int> p;
p.first="haha";
p.second=5;
cout<<p.first<<" "<<p.second<<endl;
p=make_pair("xixi",55);
cout<<p.first<<" "<<p.second<<endl;
p=pair<string,int>("heihei",555);
cout<<p.first<<" "<<p.second<<endl;
//haha 5
//xixi 55
//heihei 555
3.pair常用函数实例解析
2个pair类型的数据可以直接用== != < <= > >=比较大小
总是以first大小作为标准,只有当first相等时才判断second的大小
//2个pair类型的数据可以直接用== != < <= > >=比较大小
//总是以first大小作为标准,只有当first相等时才判断second的大小
pair<int,int>p1(5,10);
pair<int,int>p2(5,15);
pair<int,int>p3(10,5);
if(p1<p3)printf("p1<p3\n");
if(p1<=p3)printf("p1<=p3\n");
if(p1<p2)printf("p1<p2\n");
//p1<p3
//p1<=p3
//p1<p2
4.pair的常用用途
a.可以代替二元结构体和构造函数,
b.作为map的键值对来进行插入
map<string,int> mp;
mp.insert(make_pair("heihei",5));
mp.insert(pair<string,int>("haha",10));
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++){
cout<<it->first<<" "<<it->seonc<<endl;
}
// haha 10
//haha 5
下一篇: Flink 写入Kafka多个topic