Spec-Zone.ru › C++

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

void shrink_to_fit();
(начиная с C++26)

Запрашивает уменьшение capacity() с приближением к size().

Это необязательный к выполнению запрос на уменьшение использования памяти без изменения размера hive. Выполнение запроса зависит от реализации.

Может уменьшить (но не увеличить) ёмкость и может перераспределить элементы. Если ёмкость уже равна размеру, ничего не происходит.

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

Если T не удовлетворяет требованиям MoveInsertable для std::hive<T, Allocator>, поведение не определено.

Сложность

Если происходит перераспределение, линейная от размера hive.

Исключения

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

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

Пример

#include <hive>
#include <print>

int main()
{
    std::hive<int> hive;
    std::println("Default-constructed capacity is {}", hive.capacity());
    hive.insert(100, 0);
    std::println("Capacity after inserting 100 elements is {}", hive.capacity());
    for (auto i{0}; i != 42; ++i)
        hive.erase(hive.begin());
    std::println("Capacity after erasing 42 elements is {}, size is {}",
                 hive.capacity(), hive.size());
    hive.shrink_to_fit();
    std::println("Capacity after shrink_to_fit() is {}", hive.capacity());
}

Возможный вывод:

Default-constructed capacity is 0
Capacity after inserting 100 elements is 100
Capacity after erasing 42 elements is 100, size is 58
Capacity after shrink_to_fit() is 76

См. также

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

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

Spec-Zone.ru

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