Namespaces
Variants

std::hive

С сайта ru.cppreference.net
 
 
 
 
Определён в заголовке <hive>
template<
    class T,
    class Allocator = std::allocator<T>
> class hive;
(1) (начиная с C++26)
namespace pmr {
    template<class T>
    using hive = std::hive<T, std::pmr::polymorphic_allocator<T>>;
}
(2) (начиная с C++26)


1) std::hive — это последовательный контейнер, который обеспечивает вставку и удаление за постоянное время.
2) std::pmr::hive — это псевдоним шаблона, использующий полиморфный аллокатор.

hive автоматически управляет своей памятью в нескольких блоках памяти (блоки элементов). Позиция вставки не определена, поэтому контейнер может повторно использовать память удалённых элементов.

Когда активные блоки (блоки элементов, содержащие элементы) становятся пустыми, они могут быть либо освобождены, либо стать зарезервированными блоками.

Зарезервированные блоки становятся активными, когда используются повторно для хранения элементов. Пользователь может создавать дополнительные зарезервированные блоки, вызывая reserve().

Удаление и итерация имеют сложность O(1).

Ёмкость каждого активного блока увеличивается с определённым реализацией коэффициентом (например, на 1.69). Как пользователи, так и реализации могут ограничивать минимальную и максимальную ёмкость блоков элементов.

Тип std::hive соответствует требованиям Container, за исключением операторов == и !=. Тип std::hive также удовлетворяет требованиям ReversibleContainer, AllocatorAwareContainer и некоторым требованиям SequenceContainer.

Параметры шаблона

T - Тип элементов.
Требования, предъявляемые к элементам, зависят от фактических операций, выполняемых над контейнером. Как правило, требуется, чтобы тип элемента был завершённым и удовлетворял требованиям Erasable, но многие функции-члены предъявляют более строгие требования.

Allocator - Аллокатор, используемый для получения/освобождения памяти и конструирования/уничтожения элементов в этой памяти. Тип должен соответствовать требованиям Allocator. Программа считается некорректной, если Allocator::value_type не является тем же типом, что и T.

Типы-члены

Тип-член Определение
value_type T
allocator_type Allocator
pointer std::allocator_traits<Allocator>::pointer
const_pointer std::allocator_traits<Allocator>::const_pointer
reference value_type&
const_reference const value_type&
size_type определяемый реализацией
difference_type определяемый реализацией
iterator определяемый реализацией LegacyBidirectionalIterator по value_type
const_iterator определяемый реализацией LegacyBidirectionalIterator по const value_type
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>

Элементы данных

Элемент Описание
hive_limits current-limits (закрытый) текущие ограничения ёмкости блока
(объект-член для демонстрации*)

Функции-члены

создаёт объект hive
(public функция-член)
уничтожает объект hive
(public функция-член)
присваивает значения контейнеру
(public функция-член)
присваивает значения контейнеру
(public функция-член)
присваивает диапазон значений контейнеру
(public функция-член)
возвращает связанный аллокатор
(public функция-член)
Итераторы
возвращает итератор на начало
(public функция-член)
возвращает итератор на конец
(public функция-член)
возвращает обратный итератор на начало
(public функция-член)
возвращает обратный итератор на конец
(public функция-член)
Вместимость
проверяет, пуст ли контейнер
(public функция-член)
возвращает количество элементов
(public функция-член)
возвращает максимально возможное количество элементов
(public функция-член)
возвращает количество элементов, которое может быть размещено в текущей выделенной памяти
(public функция-член)
резервирует память
(public функция-член)
уменьшает использование памяти за счёт освобождения неиспользуемой памяти
(public функция-член)
освобождает зарезервированные блоки и уменьшает ёмкость соответственно
(public функция-член)
возвращает текущие ограничения ёмкости блока
(public функция-член)
возвращает ограничения ёмкости блока по умолчанию
(public функция-член)
возвращает жёсткие ограничения ёмкости блока
(public функция-член)
проверяет, соответствуют ли заданные ограничения ёмкости требованиям
(public функция-член)
перераспределяет активные блоки так, чтобы они находились в пределах ограничений блока
(public функция-член)
Модификаторы
создаёт элемент на месте
(public функция-член)
создаёт элементы на месте с подсказкой
(public функция-член)
вставляет элементы
(public функция-член)
вставляет диапазон элементов
(public функция-член)
удаляет элементы
(public функция-член)
обменивает содержимое
(public функция-член)
очищает содержимое
(public функция-член)
Операции
перемещает элементы из другого контейнера hive
(public функция-член)
удаляет последовательные повторяющиеся элементы
(public функция-член)
сортирует элементы
(public функция-член)
возвращает итератор, указывающий на тот же элемент, что и заданный указатель
(public функция-член)

Внешние функции

специализирует алгоритм std::swap
(шаблон функции)
удаляет все элементы, удовлетворяющие определённым критериям
(шаблон функции)

Руководства по выводу типов

(начиная с C++26)

Вспомогательные классы

информация о расположении ограничений ёмкости блока в std::hive
(класс)

Примечания

Макрос проверки возможностей Значение Std Возможность
__cpp_lib_hive 202502L (C++26) std::hive

Пример

См. также

двусвязный список
(шаблон класса)
односвязный список
(шаблон класса)

Внешние ссылки

1.  plf::hive — эталонная реализация на github.com
2.  Пчелиный улей на Wikipedia.com