C++ 可以安全地依赖无序映射(hashmap)中的初始化值
假设我想构造一个C++ 可以安全地依赖无序映射(hashmap)中的初始化值,c++,hashmap,unordered-map,value-initialization,C++,Hashmap,Unordered Map,Value Initialization,假设我想构造一个std::unordered_map来映射字符串中字符的频率。我会做类似的事情 char* myString; std::unordered_map<char, int> hashmap; for(char* pch = myString; *pch !=0 ; pch++) { hashmap[*pch]++; } char*myString; std::无序的_映射hashmap; for(char*pch=myString;*pch!=0;pch++
std::unordered_map
来映射字符串中字符的频率。我会做类似的事情
char* myString;
std::unordered_map<char, int> hashmap;
for(char* pch = myString; *pch !=0 ; pch++)
{
hashmap[*pch]++;
}
char*myString;
std::无序的_映射hashmap;
for(char*pch=myString;*pch!=0;pch++)
{
hashmap[*pch]++;
}
对我来说,这感觉很危险,因为我怎么知道
hashmap[*pch]++
将在hashmap条目的值中构造一个从0开始的整数?我在哪里可以找到此保证(如果存在)?语言和标准库的常用参考,至少如果您按照Praetorian提到的值初始化链接进行操作。另请参见(答案相同)。您可以通过阅读文档找到保证。这是非常安全的,因为如果密钥不存在,unordered\u map::operator[]
将首先插入一个初始化的值int
,即0
。