std::hive<T,Allocator>::sort
template< class Compare = std::less<T> > void sort( Compare comp = Compare() ); | (начиная с C++26) |
Сортирует элементы. Может выделять память. Элементы сравниваются с использованием comp. Порядок эквивалентных элементов не сохраняется.
Ссылки, указатели и итераторы, ссылающиеся на элементы в *this, а также итератор за последним элементом могут стать недействительными.
T должен удовлетворять требованиям MoveInsertable для hive, а также требованиям MoveAssignable и Swappable. В противном случае поведение не определено.
Параметры
| comp | - | объект функции сравнения (то есть объект, удовлетворяющий требованиям Compare), который возвращает true, если первый аргумент меньше (то есть упорядочен перед) второго. Сигнатура функции сравнения должна быть эквивалентна следующей: boolcmp(constType1&a,constType2&b); Хотя сигнатура не обязана содержать const&, функция не должна изменять переданные ей объекты и должна принимать любые значения типа (возможно, const) |
| Требования к типам | ||
-Compare должен удовлетворять требованиям Compare. |
||
Сложность
\(\scriptsize N \cdot log(N)\)N·log(N) вызовов comp, где \(\scriptsize N\)N — size().
Исключения
Если выбрасывается исключение, порядок элементов в *this не определён.
Примечания
std::sort и ranges::sort требуют итераторов произвольного доступа и поэтому не могут использоваться с hive.
Пример
#include <hive>
#include <functional>
#include <print>
int main()
{
std::hive<int> hive{3, 1, 4, 1, 5, 9, 2, 6, 5};
std::println("Initially: {}", hive);
hive.sort();
std::println("Ascending: {}", hive);
hive.sort(std::greater<int>());
std::println("Descending: {}", hive);
}
Вывод:
Initially: [3, 1, 4, 1, 5, 9, 2, 6, 5] Ascending: [1, 1, 2, 3, 4, 5, 5, 6, 9] Descending: [9, 6, 5, 5, 4, 3, 2, 1, 1]
См. также
| удаляет последовательные повторяющиеся элементы (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/sort