我见过类似以下的示例代码:
std::string s = "Hello World!";
std::map<char, std::size_t> h;
for (std::string::const_iterator i=s.cbegin(); i!=s.cend(); ++i)
{
++h[*i];
}
assert(h['l'] == 3);
这似乎依赖于在每个字母的第一次出现时将值类型归零。即使使用像std::size_t
这样没有默认构造函数将其重置为零的东西,这是否可以保证?
答案 0 :(得分:6)
确实这就是map
的工作原理:[]
- 运算符正在变异,并且创建映射类型的对象(如果它尚不存在)。由于size_t
值初始化为零,所以你一切都很好。
答案 1 :(得分:5)