Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该使用++;无序地图的字数[key]<;字符串,int>;当键不存在时';在wordCount中不存在吗?_C++_Unordered Map - Fatal编程技术网

C++ 我应该使用++;无序地图的字数[key]<;字符串,int>;当键不存在时';在wordCount中不存在吗?

C++ 我应该使用++;无序地图的字数[key]<;字符串,int>;当键不存在时';在wordCount中不存在吗?,c++,unordered-map,C++,Unordered Map,见下面的代码: unordered_map<string, int> wordCount; for(string word: words) ++wordCount[word]; 无序映射字数; for(字符串字:字) ++字数; 问题: 在这里使用++wordCount[word]当wordCount中不存在单词时?我经常看到有人这样使用,但我不是很确定 解释说: 如果k与容器中任何元素的键不匹配,则 函数使用该键插入新元素并返回引用 到它的映射值。请注意,这始终会增加容

见下面的代码:

unordered_map<string, int> wordCount;
for(string word: words)
    ++wordCount[word];
无序映射字数;
for(字符串字:字)
++字数;
问题:

在这里使用
++wordCount[word]当wordCount中不存在单词时?我经常看到有人这样使用,但我不是很确定

解释说:

如果k与容器中任何元素的键不匹配,则 函数使用该键插入新元素并返回引用 到它的映射值。请注意,这始终会增加容器的容量 大小为1,即使没有为元素指定映射值( 元素是使用其默认构造函数构造的)


我知道这一点。所以,我认为像这样直接增加地图价值是不安全的,对吗?

当使用默认分配器时,这将导致从键复制构造键,并初始化映射值

关键字是。初始化的
int
值为零

下面是(C++14,23.5.4.3第2段,[unord.map.elem]):

效果:如果
unordered_-map
尚未包含其键等效于
k
的元素,则第一个运算符插入值
value_-type(k,mapped_-type())
,第二个运算符插入 值
值类型(std::move(k),mapped_type())


请注意
mapped_type()
,它对于
mapped_type=int
将构造一个零值
int

我认为默认构造的int是0。。。e、 g.
int()