我需要在按我自己的函数排序的对的多集中查找并删除一个值。显然, .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/