Добрый день, стало вдруг интересно и я решил узнать у вас, можно ли как-то сортировать
массив пар, либо по ключам, либо по значениям, используя стандартный sort()?
И какие еще интересные вещи можно делать с массивом пар?
Заранее благодарен!
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 155 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Добрый день, стало вдруг интересно и я решил узнать у вас, можно ли как-то сортировать
массив пар, либо по ключам, либо по значениям, используя стандартный sort()?
И какие еще интересные вещи можно делать с массивом пар?
Заранее благодарен!
Название |
---|
Стандартно, оно будет сортить по полю first по возрастанию. Если поля first совпадают, то сортит по возрастанию second. Если так не подходит, то надо писать компаратор и передавать в sort параметром.
Например так:
К слову, в стандартной библиотеке есть уже готовый шаблонный компаратор greater, чтобы сортить по убыванию:
Если вы пишите что-то вроде такого:
vector <pair <int, int> > a;
...
sort( a.begin(), a.end() );
...
В результате получите массив отсортированный по первому значению (при сравнении 2 элементов с одинаковыми первыми значениями то сравнение будет выполняться по 2 значению).
Пример: было — (0, 0) (1, 3) (0, 4) (100, 4) (1, 1) стало — (0, 0) (0, 4) (1, 1) (1, 3) (100, 4)
Если хотите отсортировать массив пар по значению 2 ключа нужно для функции сорт переопределить функцию сравнения. На пример так:
vector <pair <int, int> > arr;
...
sort(arr.begin(), arr.end(), comp);
...
Вообще sort может сортировать не только пары но и собственные классы (если для них определить функцию сравнения).
sort сортирует все, для чего определен оператор <
И даже то, для чего не определён оператор <, если передать третьим параметром компаратор.
http://stackoverflow.com/questions/279854/how-do-i-sort-a-vector-of-pairs-based-on-the-second-element-of-the-pair тут можно найти ответ
http://stackoverflow.com/questions/279854/how-do-i-sort-a-vector-of-pairs-based-on-the-second-element-of-the-pair here