std::hive<T,Allocator>::trim_capacity
void trim_capacity(); | (1) | (начиная с C++26) |
void trim_capacity( size_type new_cap ); | (2) | (начиная с C++26) |
1) освобождает все зарезервированные блоки и соответствующим образом уменьшает
capacity().Все итераторы (включая итератор end()), указатели и ссылки на элементы контейнера остаются действительными.
Параметры
| new_cap | - | запрашиваемая новая вместимость hive в количестве элементов |
Сложность
Линейная относительно количества освобождаемых зарезервированных блоков.
Пример
#include <hive>
#include <print>
int main()
{
std::hive<int> hive;
const std::size_t count{1000};
const int value{100};
hive.insert(count, value);
hive.insert(count, value + 1);
std::println("After inserting {} elements capacity is {}", hive.size(), hive.capacity());
std::erase(hive, value);
std::println("After erasing {} elements capacity is {}", count, hive.capacity());
auto hive2 = hive;
hive.shrink_to_fit();
std::println("After shrink_to_fit() capacity is {}", hive.capacity());
hive2.trim_capacity();
std::println("After trim_capacity() capacity is {}", hive2.capacity());
}
Возможный вывод:
After inserting 2000 elements capacity is 2000 After erasing 1000 elements capacity is 1000 After shrink_to_fit() capacity is 1000 After trim_capacity() capacity() is 1020
См. также
| возвращает количество элементов, которые могут храниться в уже выделенной памяти (открытая функция-член) |
|
| уменьшает использование памяти, освобождая неиспользуемую память (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/hive/trim_capacity