Подтвердить что ты не робот

Сортировка вектора STL по двум значениям

Как отсортировать вектор STL на основе двух разных критериев сравнения? Функция sort() по умолчанию принимает только один объект сортировщика.

4b9b3361

Ответ 1

Вам нужно совместить два критерия с одним. Вот пример того, как вы сортируете структуру с первым и вторым полем на основе первого поля, затем второго поля.

#include <algorithm>

struct MyEntry {
  int first;
  int second;
};

bool compare_entry( const MyEntry & e1, const MyEntry & e2) {
  if( e1.first != e2.first)
    return (e1.first < e2.first);
  return (e1.second < e2.second);
}

int main() {
  std::vector<MyEntry> vec = get_some_entries();
  std::sort( vec.begin(), vec.end(), compare_entry );
}

ПРИМЕЧАНИЕ: реализация compare_entry обновлена ​​для использования кода из Nawaz.