Spec-Zone.ru › C++

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

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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/sort

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API