Spec-Zone.ru › C++

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

void trim_capacity();
(1) (начиная с C++26)
void trim_capacity( size_type new_cap );
(2) (начиная с C++26)
1) освобождает все зарезервированные блоки и соответствующим образом уменьшает capacity().
2) если new_cap < capacity(), capacity() уменьшается до значения не меньше new_cap.

Все итераторы (включая итератор 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

См. также

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

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

Spec-Zone.ru

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