概述
map中的key不可能重复,所以有[]
和.at()
访问,但是multimap就没有了,因为有重复的key,所以访问结果不一定唯一,也就没有意义了,所以直接没有这个功能。
map访问元素建议使用.at()
,如果[]
访问没有这个key的话,会自动添加一个key,value是默认值,这可能不是我们想要的效果
例如
map<int,string> MAP;
MAP.emplace(pair<int,string>(1,"www")); //emplace()插入效果和insert()差不多,更加高效
MAP.emplace(pair<int,string>(1,"aaa")); //这个不会插入成功,因为已经存在key 1了
MAP.emplace(pair<int,string>(2,"aaa"));
cout<<MAP.size()<<endl; //2
//所以MAP中有2个元素,{1,“www"},{2,"aaa"}
//对于存在的key,以下两个访问效果一样
cout<<"MAP.at(1) = "<<MAP.at(1)<<endl;
cout<<"MAP[1] = "<<MAP[1]<<endl;
//对于不存在的key,.at()访问会报错,程序停止运行,[]访问会向MAP插入一个{3,""}
cout<<"MAP.at(3) = "<<MAP.at(3)<<endl;
cout<<"MAP[3] = "<<MAP[3]<<endl; //会插入,这可能不是我们想要的,除非你确实想要这个效果
//例如以下
MAP[4]="lll"; //虽然没有,但会插入{4,"lll"}
MAP.at(5)="hhh"; //报错程序退出
cout<<MAP.size()<<endl;
最后
以上就是刻苦帽子为你收集整理的c++, map的[]访问和.at()访问区别的全部内容,希望文章能够帮你解决c++, map的[]访问和.at()访问区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复