Вы можете указать пользовательский предикат сортировки.В C ++ 11 это лучше всего сделать с помощью лямбды:
typedef std::pair<int, int> ipair;
std::list<ipair> thelist;
thelist.sort([](const ipair & a, const ipair & b) { return a.first < b.first; });
В старых версиях C ++ вам нужно написать соответствующую функцию:
bool compFirst(const ipair & a, const ipair & b) { return a.first < b.first; }
thelist.sort(compFirst);
(Вместо этого, если ipair
Конечно, вы можете иметь свою собственную структуру данных, просто измените соответствующую функцию сравнения, чтобы получить доступ к соответствующему элементу данных.)
Наконец, если это имеет смысл, вы также можете снабдить свой пользовательский класс operator<
.Это позволяет вам свободно использовать класс в любом упорядоченном контексте, но обязательно поймите последствия этого.