Namespaces
Variants

std::hive<T,Allocator>::sort

От ru.cppreference.net
 
 
 
 
template< class Compare = std::less<T> >
void sort( Compare comp = Compare() );
(начиная с C++26)

Сортирует элементы. Может выделять память. Элементы сравниваются с помощью comp. Порядок эквивалентных элементов не сохраняется.

Ссылки, указатели и итераторы, ссылающиеся на элементы в *this, а также итератор за концом, могут быть инвалидированы.

T должны быть MoveInsertable в hive, MoveAssignable и Swappable. В противном случае поведение не определено.

Параметры

comp - объект функции сравнения (т.е. объект, удовлетворяющий требованиям Compare) который возвращает ​true если первый аргумент меньше (т.е. упорядочен перед) второго.

Сигнатура функции сравнения должна быть эквивалентна следующей:

bool cmp(const Type1& a, const Type2& b);

Хотя сигнатура не обязательно должна иметь const&, функция не должна изменять переданные ей объекты и должна быть способна принимать все значения типа (возможно const) Type1 и Type2 независимо от категории значения (таким образом, Type1& не допускается, а также Type1 если только для Type1 перемещение эквивалентно копированию(начиная с C++11)).
Типы Type1 и Type2 должны быть такими, что объект типа <T,Allocator>::const_iterator может быть разыменован и затем неявно преобразован в оба из них. ​

Требования к типам
-
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]

Смотри также

удаляет последовательные повторяющиеся элементы
(открытая функция-член)