将一对插入地图并增加计数?
Insert a pair into a map and increase the count?
我正在使用的代码库使用 map::operator[]
插入 和 将该条目中的项目数增加一个(这对我来说是一个知识差距).这是一个例子:
map<string, size_t> namesMap;
namesMap[firstName]++;
我想做的是将 ID 添加到插入,同时保留上面语法中的增量行为。
我的新地图看起来像这样:
map<string, pair<int, size_t>> namesMapWithID;
我正在努力了解如何使用我的新地图获得等效的功能。这基本上是我的目标(显然是错误的,因为“++”不能这样使用):
namesMapWithID.insert(firstName, make_pair(employeeID, ++));
有没有我遗漏的更好的方法?
您可以通过使用插入方法以及 it/bool 配对 returns 来完成此操作,从而提供单个查找(按名称),如果在初始查找时设置员工 ID,然后分别递增计数器。
像这样:
auto pr = namesMapWithID.insert(std::make_pair(firstName,
std::make_pair(employeeID, size_t())));
++pr.first->second.second;
我正在使用的代码库使用 map::operator[]
插入 和 将该条目中的项目数增加一个(这对我来说是一个知识差距).这是一个例子:
map<string, size_t> namesMap;
namesMap[firstName]++;
我想做的是将 ID 添加到插入,同时保留上面语法中的增量行为。
我的新地图看起来像这样:
map<string, pair<int, size_t>> namesMapWithID;
我正在努力了解如何使用我的新地图获得等效的功能。这基本上是我的目标(显然是错误的,因为“++”不能这样使用):
namesMapWithID.insert(firstName, make_pair(employeeID, ++));
有没有我遗漏的更好的方法?
您可以通过使用插入方法以及 it/bool 配对 returns 来完成此操作,从而提供单个查找(按名称),如果在初始查找时设置员工 ID,然后分别递增计数器。
像这样:
auto pr = namesMapWithID.insert(std::make_pair(firstName,
std::make_pair(employeeID, size_t())));
++pr.first->second.second;