Мультисеть пары, найти

0

Мне нужно найти и стереть значение в 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"

Теги:
pair
multiset

1 ответ

2
Лучший ответ

Ваш компаратор будет оценивать значение true для равных объектов. Вы должны изменить

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

в

return b.second > a.second;
  • 0
    Спасибо, это работает ;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню