Мне нужно найти и стереть значение в 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"
Ваш компаратор будет оценивать значение true
для равных объектов. Вы должны изменить
if (a.second < b.second) return false;
else return true;
в
return b.second > a.second;