【问题标题】:Insert a pair into a map and increase the count?将一对插入地图并增加计数?
【发布时间】:2018-09-24 22:18:35
【问题描述】:

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

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

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

我的新地图如下所示:

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

我正在努力寻找如何使用我的新地图获得同等功能。这基本上是我的目标(显然是错误的,因为“++”不能这样使用):

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

有没有更好的方法我错过了?

【问题讨论】:

    标签: c++ dictionary std-pair


    【解决方案1】:

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

    类似这样的:

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

    【讨论】:

    • 啊,好吧,这正是我想要做的。我想我对 [] 操作符背后到底发生了多少事情感到困惑。
    • @NeatoBandito 尽管这是否是您真正试图解决的问题的正确应用程序,但它可以解决您的问题,我希望这已经足够了。 (显然它不是为了匿名投票者)。
    • 是的,这个概念就是我所追求的。这只是我想出的来说明它。谢谢你教我一些新东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2021-12-16
    相关资源
    最近更新 更多