<分区>
这段代码看起来运行良好,它们的默认值 value_type
(int
) 为 0;它适用于所有情况吗?
std::map<std::string,int> w;
for (const auto& t: str)
w[t]++;
双呢? map ?默认 0.0?
标签 c++ initialization std
<分区>
这段代码看起来运行良好,它们的默认值 value_type
(int
) 为 0;它适用于所有情况吗?
std::map<std::string,int> w;
for (const auto& t: str)
w[t]++;
双呢? map ?默认 0.0?
最佳答案
是的,此代码适用于任何类型的 key ,包括 double
。这样做的原因是非常量 operator []
返回一个 reference 到键处的值,而不是该值的拷贝。它是应用 ++
运算符的引用。
您显示的代码片段的工作原理如下:
str
容器中 string
类型的每个键 t
,w
中搜索给定的键0
for int
) 值的对象被创建int&
初始化为零)返回给调用者++
运算符应用于从 []
返回的引用,这会将 0
更改为 1
(或 0.0
到 1.0
等)关于c++ - std::map<string,int> 值的默认初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177596/