#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>//万能头文件
#include<map>//map头文件
#include<utility>//含pair的头文件,也包含在map中
using namespace std;
int main()
{
pair<string,int> p1("zxl",100);
pair<string,int> p2=make_pair("kk",99);
//以上两种都是构建pair的方式,第一个是键,第二个是值
/*
pair类似于结构体和map
不同于结构体的是->pair自带比较函数,按照先键后值依次比较
pair可作为map的元素用insert插入
不同于map的是->pair本身不需要键的一一对应,可以构建多个同键不同值的pair
但插入到map中的话,键必须是唯一的,一个键只能对应一个值
*/
map<string,int> score;
score.insert(p1);
score.insert(p2);//构建pair后用变量名写,或者直接在括号内构建pair都可插入
score.insert(make_pair("zj",0));
printf("\n");
for(map<string,int>::iterator it=score.begin();it!=score.end();it++)
{
if(it!=score.begin()) printf(" ");
else printf("正遍历输出刚插入的三组map元素:");
cout<<it->first<<" "<<it->second;
}//it->first指键,it->second指值
cout<<endl<<endl;
printf("用类似于结构体的方式访问pair元素zxl对应的int值:%d\n\n",p1.second);
//p1.first是键"zxl",p1.second是值100,注意这儿的first和second不要加括号!!!
pair<string,int> p3=make_pair("zxl",120);
printf("pair间的比较:p1>p3?=%d p2<p3?=%d\n\n",p1>p3,p2<p3);
/*
按照先键后值依次比较,string是按字典序
返回int型的则0表示假,1表示真
*/
return 0;
}
运行结果如下