c++ map:第一次调用map[a],如何初始化map[a].倒数第二
C++ map :first call to map[a], how to initialize map[a].second to zero?
当我使用操作符[]调用map[a];
时,在映射中没有键a, map[a]
中的第二个元素将初始化为零吗?如果没有,有什么好的方法吗?我目前使用的是if (map.find(a)) map[a]++; else map[a] = 1;
。我想使用一个初始化为0的映射,并且只调用map[a]++;
和map[a]--;
假设映射类型为std::map<int, int> m
,那么对于不存在的键a
调用m[a]
将插入键为a
,值为int()
的元素,即0
。因此,您可以安全地将代码简化为
std::map<int, int> m
....
m[a]++; // OK
在一般情况下,新元素插入将值初始化的键对象插入到映射中。对于内置算术类型,如int
,值初始化意味着零初始化。
假设存在std::map
,如果operator[]
创建了一个新元素(即对于先前不存在的键),则映射的值是初始化的值。
对于像int
这样的基本类型,这意味着值为零。对于类/类类型,它意味着默认构造。
相关文章:
- 使用通用值初始化 std::map,不重复
- 初始化 std::数组 of Eigen::Map
- std::map与谓词与初始化列表
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 如何修复"非聚合无法使用初始值设定项列表初始化" <map>
- C++仅在 std::map 中初始化密钥
- 将列表初始化的对插入到 std::map 中
- C++ 接受对抽象类的常量引用的构造函数无法初始化 std::map
- 如何在嵌套列表初始化中从map<><>中辨别向量?
- 初始化常量静态 std::map unique_ptr作为值
- 如何初始化 std::map<int, int> 键递增但值相同?
- 新的STD :: MAP条目如何仅通过键插入初始化
- 使用默认构造的值初始化 std::map
- STD :: MAP初始化列表构造函数
- 使用std::矢量进行std::map初始化
- C++中正确的Map初始化
- 使c++编译器优化到在map初始化时只调用构造函数一次
- c++ 0x 3d map初始化类似于php的关联数组
- Map初始化:目标代码比源代码大50倍
- 在map初始化列表中使用std::make_pair