map、multimap容器的相关 *** 作

map、multimap容器的相关 *** 作,第1张

map、multimap容器的相关 *** 作 map

map中所有元素都是pair,pair中第一个元素为key,第二个元素为value,所有元素会根据元素键值自动排序,效率高

优点:可以根据key值快速找到value值
map和multimap区别:
1.map不允许容器中有重复key值元素。
2.multimap允许容器中有重复key值元素。

#include
using namespace std;
#include
#include

void printmap(map&m) {
for (map::iterator it = m.begin(); it != m.end(); it++) {
cout << “key = " << (*it).first <<” "<< "value = " << (*it).second << endl;
//cout << "key = " << it->first << "value = " << it->second << endl;
}
cout << endl;
}
//仿生函数
class compareMap {
public:
bool operator()(int v1,int v2)const {
return v1 > v2;
}
};

int main()
{
map m1;//默认构造

m1.insert(pair(1,"唐僧"));
m1.insert(pair(3, "孙悟空"));
m1.insert(pair(2, "猪八戒"));
m1.insert(pair(4, "沙僧"));

mapm2(m1);//拷贝构造

m2.insert(make_pair(5, "如来佛祖"));

mapm3;
m3 = m2;  //赋值

m3.insert(map::value_type(6, "观音菩萨"));

m3[7] = "托塔天王";
//用[]要注意:如果容器中已经存在该键值,会将该键值的内容修改掉
//而用insert函数插入相同的键值,会失败,不会修改原来键值的内容

cout << m3[8];
//用[]读取内容时,一定要确定键值存在,否则会重新创建一个值为0的对组元素插入到map中
//此处为空字符串

if (m1.empty()) {
	cout << "map1容器为空!";
}
else {
	cout << "map1容器大小为:" << m1.size()<::iterator pos = m3.find(4);

if (pos != m3.end()) {
	cout << "key = " << pos->first << " " << "value = " << pos->second< m4;
m4.insert(make_pair(2,'a'));
m4.insert(make_pair(1, 'e'));
m4.insert(make_pair(4, 'f'));
m4.insert(make_pair(5, 'v'));

for (map::iterator it = m4.begin(); it != m4.end(); it++) {
	cout << "key = " << (*it).first << " " << "value = " << (*it).second << endl;
}
cout << endl;

printmap(m1);
printmap(m2);
printmap(m3);

}

结果:
map1容器大小为:4
key = 4 value = 沙僧

1
key = 5 value = v
key = 4 value = f
key = 2 value = a
key = 1 value = e

key = 1 value = 唐僧
key = 2 value = 猪八戒
key = 3 value = 孙悟空
key = 4 value = 沙僧
key = 5 value = 如来佛祖

key = 2 value = 猪八戒
key = 4 value = 沙僧

key = 1 value = 唐僧
key = 2 value = 猪八戒
key = 3 value = 孙悟空
key = 4 value = 沙僧
key = 5 value = 如来佛祖
key = 6 value = 观音菩萨
key = 7 value = 托塔天王
key = 8 value =

E:cpptextDebugtext.exe (进程 16272)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

multimap

multiset和set除了区别以外使用方法一样。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5504725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存