Multiset对,找到

问题描述 投票:0回答:1

我需要找到并擦除由我自己的函数排序的对的mutliset中的值。显然,.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”

c++ std-pair multiset
1个回答
2
投票

您的比较器将评估true是否有相同的物体。你应该改变

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

return b.second > a.second;
© www.soinside.com 2019 - 2024. All rights reserved.