Я хочу отсортировать вектор, в котором тип элемента является классом, определенным мной в следующем коде.Что такое правильный способ сортировки по возрастанию в C++ при перегрузке сравнительного символа «<»
struct Node {
int _x;
int _y;
int _h;
Node(int x, int y, int h) : _x(x), _y(y), _h(h) {}
bool operator<(const Node &p) const {
return _h > p._h; // > or <
}
};
vector<Node> v; //priority_queue<Node> p;
...//push some objects
sort(v.begin(), v.end());
Это очень странно, что иногда я использую «вернуться _h> p._h» перегружать функцию, чтобы получить возрастающий порядок, но иногда это нисходящий. Может быть, не в векторе, а в другой структуре даты, которая использует сравнительную функцию, например, priority_queue, map и т. Д.
Есть ли какие-либо подробные документы для введения сравнительной функции?
Решено. Я думаю, что у меня плохая память.
http://en.cppreference.com/w/cpp/algorithm/sort –
Можете ли вы показать пример, где вы, возможно, иногда получаете другой порядок? – user463035818
@ tobi303 извините, я забыл, но я уверен, что встречался с проблемой сортировки несколько раз – vinllen