我有一个键值对的映射。先验我不知道它的大小,即我将拥有多少和哪些键。现在,在一看,键“出现”,每次出现时我都需要增加相应键的值。
示例:的
std::map<int, unsigned int> myMap;
std::vector<int> vectorOfValues; // 123,456,123,789,123,456
for(unsigned int i=0; i<vectorOfValues.size(); ++i) {
myMap[vectorOfValues.at(i)] += 1;
}
所以现在myMap
应该包含<123,3>, <456,2>, <789,1>
。
问题:
这是正确的吗?我担心在没有初始化值的情况下使用地图不是一个好主意。但是我希望每次想要增加它时都要避免搜索条目。
干杯!
答案 0 :(得分:3)
IMO,没关系,unsigned int
将默认构建(即零初始化),一条评论是at()
调用是多余的 - 使用operator[]
(因为你已经约束) size()
)。
答案 1 :(得分:1)
这是正确的;以前不存在的值将初始化为零。