std::list<T,Allocator>:: sort
|
void
sort
(
)
;
|
(1) | (constexpr начиная с C++26) |
|
template
<
class
Compare
>
void sort ( Compare comp ) ; |
(2) | (constexpr начиная с C++26) |
Сортирует элементы и сохраняет порядок эквивалентных элементов. Если возникает исключение, порядок элементов в * this не определён.
Никакие ссылки или итераторы не становятся недействительными.
Содержание |
Параметры
| comp | - |
объект функции сравнения (т.е. объект, удовлетворяющий требованиям
Compare
), который возвращает
true
если первый аргумент
меньше
второго (т.е. упорядочен
перед
вторым).
Сигнатура функции сравнения должна быть эквивалентна следующей: bool cmp ( const Type1 & a, const Type2 & b ) ;
Хотя сигнатура не обязана содержать
const
&
, функция не должна модифицировать передаваемые ей объекты и должна быть способна принимать все значения типа (возможно const)
|
| Требования к типам | ||
-
Compare
должен удовлетворять требованиям
Compare
.
|
||
Сложность
Дано N как size() :
Примечания
std::sort
требует итераторов произвольного доступа и поэтому не может использоваться с
list
. Эта функция также отличается от
std::sort
тем, что не требует возможности обмена для типа элементов
list
, сохраняет значения всех итераторов и выполняет устойчивую сортировку.
Пример
#include <functional> #include <iostream> #include <list> std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list) { for (const int i : list) ostr << ' ' << i; return ostr; } int main() { std::list<int> list{8, 7, 5, 9, 0, 1, 3, 2, 6, 4}; std::cout << "initially: " << list << '\n'; list.sort(); std::cout << "ascending: " << list << '\n'; list.sort(std::greater<int>()); std::cout << "descending:" << list << '\n'; }
Вывод:
initially: 8 7 5 9 0 1 3 2 6 4 ascending: 0 1 2 3 4 5 6 7 8 9 descending: 9 8 7 6 5 4 3 2 1 0
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 1207 | C++98 | было неясно, будут ли итераторы и/или ссылки инвалидированы | сохранять валидность |
Смотрите также
|
изменяет порядок элементов на обратный
(публичная функция-член) |