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 если первый аргумент меньше (т.е. упорядочен перед) второго. Сигнатура функции сравнения должна быть эквивалентна следующей:
Хотя сигнатура не обязательно должна иметь |
| Требования к типам | ||
-Compare должен удовлетворять требованиям Compare.
| ||
Сложность
N·log(N) применений comp, где 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]
Смотри также
| удаляет последовательные повторяющиеся элементы (открытая функция-член) |