c++ - 对的多重集,找到

标签 c++ std-pair multiset

我需要在按我自己的函数排序的对的多集中查找并删除一个值。显然, .find 总是将迭代器返回到末尾,而不是返回到搜索到的值。有小费吗?这是函数:

struct cmp
{
  bool operator() (const para &a, const para &b)
  {
    if (a.first > b.first) return false;
    if (b.first > a.first) return true;

    if (a.second < b.second) return false;
    else return true;
  }
};

编辑:

kolej.insert(para(0,2));
if (kolej.find(para(0,2)) == kolej.end()) printf("Jej");

即使我做那样的事情,para 是 pair<int,int>而 kolej 是 multiset ,它将始终继续打印“Jej”

最佳答案

对于相同的对象,您的比较器将评估为 true。你应该改变

if (a.second < b.second) return false;
else return true;

return b.second > a.second;

关于c++ - 对的多重集,找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26860784/

相关文章:

c++ - 查找文本文件中的行数,并使用此维度构建数据点

C++ 菜鸟遇到段错误

c++ - 有没有办法访问 STL 容器适配器的底层容器?

java - 从最频繁的 X 条目的多重集中获取有序子集

python - 在不使用包 ADT 上的计数器类的情况下计算词频的最简单方法

c++ - Mac GUI 应用程序如何在不使用 Sparkle 的情况下自行重新启动?

c++ - 在 C++ 中打印元组内的对

c++ - 从 vector 中删除一对并为 vector 对保留空间

c++ - std::priority_queue 与 std::pair<int, int>

ruby - Ruby 中用于具有重复元素的集合的交集和并集