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. Если происходит перераспределение, сложность также линейна относительно количества перераспределённых элементов.
Пример
См. также
| уменьшает потребление памяти, освобождая неиспользуемую память (открытая функция-член) |
|
| освобождает зарезервированные блоки и соответственно уменьшает ёмкость (открытая функция-член) |
|
| возвращает количество элементов, которое может храниться в текущем выделенном хранилище (открытая функция-член) |
|
| возвращает текущие ограничения ёмкости блоков (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/reshape