我是靠谱客的博主 刻苦帽子,最近开发中收集的这篇文章主要介绍c++, map的[]访问和.at()访问区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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()访问区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部