C++ stl multimap里面的pair是什么作用,功能

2025-05-05 00:11:11
推荐回答(1个)
回答1:

map就是哈希表,用来储存成对的数据key和val
map m;
m.insert(make_pair('0',10));//插入数据,make_pair这个东西就要看自己体会了,实在不知道怎么解释
m.insert(make_pair('1',11));
m.insert(make_pair('2',12));
下面从map中读取数据,直接把key当做下标就可以得到val,只有哈希表能做这样的事情,其他如vector,list等都不行,这是哈希表最明显的特征
cout<cout<map还有两个特点
默认情况下插入数据的时候会自动按key排序
key不能重复,重复插入无效
map和multimap唯一的区别就在于2,multimap可以插入key相同的数据,用一个例子解释
#include "stdafx.h"
#include
using namespace std;
void showmap(map mp)
{
printf("\n");
for(map::iterator iter=mp.begin();iter!=mp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}
void showmultimap(multimap mmp)
{
printf("\n");
for(multimap::iterator iter=mmp.begin();iter!=mmp.end();++iter)
{
printf("%d-%c\n",iter->first,iter->second);
}
printf("\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
map mp;
mp.insert(make_pair(0,48));
mp.insert(make_pair(1,49));
mp.insert(make_pair(2,50));
mp.insert(make_pair(3,51));
mp.insert(make_pair(1,52));
showmap(mp);
multimap mmp;
mmp.insert(make_pair(0,48));
mmp.insert(make_pair(1,49));
mmp.insert(make_pair(2,50));
mmp.insert(make_pair(3,51));
mmp.insert(make_pair(1,52));
showmultimap(mmp);
getchar();
return 0;
}
运行结果:
0-0
1-1
2-2
3-3
0-0
1-1
1-4
2-2
3-3
对于map,key是唯一的,如果已经存在key了,再次插入想同key无效
multimap的key可以有多个