使用 ++ 运算符增加 map<string, int>

Posted

技术标签:

【中文标题】使用 ++ 运算符增加 map<string, int>【英文标题】:increment map<string, int> using ++ operator 【发布时间】:2011-08-02 18:02:35 【问题描述】:

我有一张地图来计算文件中单词的出现次数。 我正在从文件中读取单词,每次读取单词时我都想这样做:

map[word]++; //(where map is the name of my map, I'm not using map as a name of course)

所以如果我的地图已经有'word'作为键,它会增加它,否则它会创建新的键并增加它。

这是我关心的地方:如果我在一个新键上执行 map[word]++(这在读取的第一个单词中是不可避免的),我的程序会因为我的 map 中的 int 未初始化而崩溃吗? 如果是这样,告诉我的地图的最有效方法是什么:如果单词已经存在,则对值执行 ++,否则,创建 value = 1 的新键? 在这里使用带有 'map.find' 的 if 语句似乎是不必要的多余,你怎么看?

谢谢

【问题讨论】:

【参考方案1】:

我的程序会因为我的地图中的 int 未初始化而崩溃吗?

没有;如果键为word 的元素不存在,则将创建该元素并初始化值。值初始化的int 的值为0

【讨论】:

以上是关于使用 ++ 运算符增加 map<string, int>的主要内容,如果未能解决你的问题,请参考以下文章

map的常用方法

c++ map怎样根据索引的内容查找到key

Map集合练习题

使用Maps与Sets处理集合的交差运算

声明对对象和赋值运算符的引用

java map如何存放重复元素?