在地图中插入一对并增加数量?

时间:2018-09-24 22:18:36

标签: c++ dictionary std-pair

我正在使用的代码库使用map::operator[]插入 并将该条目中的项数增加一(这对我来说是一个知识鸿沟)。这是一个示例:

map<string, size_t> namesMap;
namesMap[firstName]++;

我想做的是在插入ID的同时保留上面语法中的增量行为。

我的新地图如下:

map<string, pair<int, size_t>> namesMapWithID;

我正在努力寻找如何在新地图上获得等效功能的方法。这基本上是我的目标(由于“ ++”无法通过这种方式使用,显然是错误的):

namesMapWithID.insert(firstName, make_pair(employeeID, ++));

我缺少一种更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以通过使用insert方法及其返回的it / bool对来执行此操作,从而进行一次查找(按名称),如果在初始查找中设置了员工id,然后分别递增计数器。 / p>

类似这样的东西:

auto pr = namesMapWithID.insert(std::make_pair(firstName,
    std::make_pair(employeeID, size_t())));
++pr.first->second.second;