【问题标题】:How to use find and erase in c++ multiset of pair如何在 C++ 多组对中使用查找和擦除
【发布时间】:2018-11-24 00:36:17
【问题描述】:

我想将一对元素存储在一个多重集中,并根据存储在该对中的第一个值对其进行排序。我做了一个比较器结构来帮助我做到这一点。但现在我不知道如何使用多重集的查找和擦除功能。 无论如何我可以使用多组的查找和擦除来进行多组配对吗?

【问题讨论】:

  • 为什么? std::multimap 正是为此目的而创建的。
  • @Yksisarvinen 是的,你是对的,我是 C++ 新手,不知道这个数据结构

标签: c++ stl comparator std-pair multiset


【解决方案1】:
multiset<int,int> myset;
myset.insert(make_pair(3,5));
if(myset.find(make_pair(3,5))!=myset.end())
    myset.erase(myset.find(make_pair(3,5)));

这将删除一对 (3,5)。如果您想删除所有对 (3,5),您只需执行 myset.erase(make_pair(3,5)) 即可。

std::multiset::erase 被重载,可以取值或迭代器的迭代器/范围。如果传递迭代器,则仅删除该元素。但是,如果您传递该值,则所有匹配该值的元素都将被删除。如果多重集中的数据类型是用户定义的对象,则需要重载 == 运算符。

std::multiset::erase

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2014-07-23
    • 2012-07-21
    相关资源
    最近更新 更多