std::forward_list<T,Allocator>:: sort
|
void
sort
(
)
;
|
(1) |
(начиная с C++11)
(constexpr начиная с C++26) |
|
template
<
class
Compare
>
void sort ( Compare comp ) ; |
(2) |
(начиная с C++11)
(constexpr начиная с C++26) |
Сортирует элементы и сохраняет порядок эквивалентных элементов. Если возникает исключение, порядок элементов в * this не определён.
Никакие ссылки или итераторы не становятся недействительными.
Содержание |
Параметры
| comp | - |
объект функции сравнения (т.е. объект, удовлетворяющий требованиям
Compare
), который возвращает
true
если первый аргумент
меньше
второго (т.е. упорядочен
перед
вторым).
Сигнатура функции сравнения должна быть эквивалентна следующей: bool cmp ( const Type1 & a, const Type2 & b ) ;
Хотя сигнатура не обязана содержать
const
&
, функция не должна модифицировать передаваемые ей объекты и должна быть способна принимать все значения типов (возможно const)
|
| Требования к типам | ||
-
Compare
должен удовлетворять требованиям
Compare
.
|
||
Сложность
Дано N как std:: distance ( begin ( ) , end ( ) ) :
Примечания
std::sort
требует итераторов произвольного доступа и поэтому не может использоваться с
forward_list
. Эта функция также отличается от
std::sort
тем, что не требует возможности обмена для типа элементов
forward_list
, сохраняет значения всех итераторов и выполняет устойчивую сортировку.
Пример
#include <functional> #include <iostream> #include <forward_list> std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list) { for (const int i : list) ostr << ' ' << i; return ostr; } int main() { std::forward_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
Смотрите также
|
изменяет порядок элементов на обратный
(публичная функция-член) |