关于c ++中map的初始值假设

7 c++ stl map

我正在map<string,int> ex; 用C++ 初始化一个地图.我在stl中找不到contains_key或类似函数,因此我只是使用它ex[inputString]++;

调试器显示int正确初始化为零,这是一个很好的假设吗?

GMa*_*ckG 7

是的,访问时不存在的值operator[]是默认构造的.对于数值,这是0.

那就是说,你正在寻找count方法:

bool hasElement = ex.count("element");
Run Code Online (Sandbox Code Playgroud)

  • @akshayubhat C++的`map [k]`和Python的`dict.setdefault(k [,d])`类似,因为一个不存在的键将设置为默认值,如C++的`map.find(k) - > second`和Python的`dict [k]`类似,因为不存在的键会产生错误.这两种语言只选择了不同的选项作为"常见"操作. (2认同)