std::hive<T,Allocator>::reshape
void reshape( std::hive_limits block_limits ); | (since C++26) |
Reallocates elements within each active block that is not within the bounds of block_limits. The elements are moved to new or existing element blocks which are within the bounds.
Deallocates any element blocks not within the bounds of block_limits.
If an exception is thrown during allocation of a new element block, capacity() may be reduced, reallocation may occur, and current-limits may be assigned a value other than block_limits. Otherwise block_limits is assigned to current-limits. If any other exception is thrown the result is unspecified.
This function does not change the size(), but may change the capacity(). If reallocation happens, the order of the elements in *this may change.
Reallocation invalidates all references, pointers, and iterators (including end()) referring to the elements in *this. If no reallocation happens, they remain valid.
Parameters
| block_limits | - | new block capacity limits |
| Type requirements | ||
-T must be MoveInsertable into std::hive. Otherwise, the behavior is undefined. |
||
Exceptions
Any exception thrown during allocation of a new element block (typically std::bad_alloc) and during construction of an element.
Complexity
Linear in the number of element blocks in *this. If reallocation happens, also linear in the number of reallocated elements.
Example
See also
| reduces memory usage by freeing unused memory (public member function) |
|
| deallocates reserved blocks and reduces capacity accordingly (public member function) |
|
| returns the number of elements that can be held in currently allocated storage (public member function) |
|
| returns current block capacity limits (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/reshape