Spec-Zone.ru › C++

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

void reshape( std::hive_limits block_limits );
(начиная с C++26)

Перераспределяет элементы в каждом активном блоке, который не находится в пределах block_limits. Элементы перемещаются в новые или существующие блоки элементов, находящиеся в этих пределах.

Освобождает любые блоки элементов, находящиеся за пределами block_limits.

Если при выделении памяти для нового блока элементов возникает исключение, capacity() может быть уменьшена, может произойти перераспределение, а current-limits может получить значение, отличное от block_limits. В противном случае block_limits присваивается current-limits. Если возникает любое другое исключение, результат не определён.

Эта функция не изменяет size(), но может изменить capacity(). Если происходит перераспределение, порядок элементов в *this может измениться.

Перераспределение делает недействительными все ссылки, указатели и итераторы (включая end()), ссылающиеся на элементы в *this. Если перераспределение не происходит, они остаются действительными.

Параметры

block_limits - новые ограничения ёмкости блоков
Требования к типу
-T должен поддерживать MoveInsertable для std::hive. В противном случае поведение не определено.

Исключения

Любое исключение, возникающее при выделении памяти для нового блока элементов (обычно std::bad_alloc) или при конструировании элемента.

Сложность

Линейная относительно количества блоков элементов в *this. Если происходит перераспределение, сложность также линейна относительно количества перераспределённых элементов.

Пример

См. также

shrink_to_fit
уменьшает потребление памяти, освобождая неиспользуемую память
(открытая функция-член)
trim_capacity
освобождает зарезервированные блоки и соответственно уменьшает ёмкость
(открытая функция-член)
capacity
возвращает количество элементов, которое может храниться в текущем выделенном хранилище
(открытая функция-член)
block_capacity_limits
возвращает текущие ограничения ёмкости блоков
(открытая функция-член)

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

Spec-Zone.ru

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