将一对插入地图并增加计数?

Insert a pair into a map and increase the count?

本文关键字:增加 地图 插入      更新时间:2023-10-16

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

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

我想做的是在插入项上附加一个 ID,同时保留上述语法中的增量行为。

我的新地图如下所示:

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

我正在努力了解如何使用我的新地图获得等效功能。这基本上是我的目标(显然是错误的,因为"++"不能这样使用(:

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

我缺少更好的方法吗?

您可以通过使用 insert 方法以及它返回的 it/bool 对来执行此操作,从而提供单个查找(按名称(,如果在初始查找时设置员工 ID,然后分别递增计数器。

像这样:

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