C++Map方括号[]的用法
1.Map回顾
让我们简单来回顾一下Map的一些特性:
1.Map中存储的是<Key,Value>的kv模型的pair键值对,调用insert插入make_pair创建pair的方式来插入。
2.Map不允许key值冗余,插入多个只会生效第一个pair对,不过multiMap却是为冗余而生,可以解决此场景,不过若有重复每次调用find()找到的key往往是中序遍历的第一个key值。
3.Map自带升序,但却是按照key值来进行升序的,想要自己控制比较规则往往可重写仿函数
2.Map方括号[]
在使用Map中我们可以使用map[key]来访问相应的key值,若不存在该key值,则会自动创建该key值,并且value赋值为0.
若使用map[key]++的方式则是创建key值或者在原存在的key上加1.具体看如下实例:
2.1当key值不存在时
map<string, int> CountMap;
CountMap["apple"]; //插入
CountMap["asshole"]++; //插入 + 加1
2.2当key值已经存在时
map<string, int> CountMap;
CountMap.insert(make_pair("hello", 1));
//已存在 "hello"
CountMap["hello"]++; //加1
在以上代码的基础上添加一句,则能在原有基础上修改value值
CountMap[“hello”] = 666; //修改
3.Map[]的经典使用场景——统计单词个数
map的方括号[]经常用来统计单词使用个数,而且利用[]的机制往往简单的几句代码就能起到非常好的作用。
所以经典用法是配合auto达到效果:
for (auto e : string)
{
CountMap[e]++;
}
具体实例如下:使用[]来统计vector中的单词
string str[] = {"apple","fuck","shaby","apple","pair","fuck","apple","jiji"};
map<string, int> CountMap;
for (auto e : str)
{
CountMap[e]++;
}
用完后你会发现,哇!爆率真的很高!
本篇到此结束,如果你喜欢我的内容,麻烦手动点个赞吧!
还想要关注我更多内容,请看:
C++搜索二叉树的实现
一纸聊完C++继承