Namespaces
Variants

std::inplace_vector<T,N>:: resize

From cppreference.net

constexpr void resize ( size_type count ) ;
(1) (начиная с C++26)
constexpr void resize ( size_type count, const value_type & value ) ;
(2) (начиная с C++26)

Изменяет размер контейнера для хранения count элементов:

  • Если count равен текущему размеру, ничего не делает.
  • Если текущий размер больше count , контейнер сокращается до первых count элементов.
  • Если текущий размер меньше count , тогда:
1) Дополнительные default-inserted элементы добавляются в конец.
2) Дополнительные копии value добавляются.

Содержание

Параметры

count - новый размер контейнера
value - значение для инициализации новых элементов
Требования к типу
-
Если выполняется следующее условие, поведение не определено:
1) T не является DefaultInsertable в inplace_vector .
2) T не является CopyInsertable в inplace_vector .

Сложность

Линейно по разнице между текущим размером и count .

Исключения

1,2) Выбрасывает std::bad_alloc если count > N .

Если исключение выбрасывается по любой причине, эти функции не оказывают никакого эффекта ( strong exception safety guarantee ).

Пример

#include <inplace_vector>
#include <print>
int main()
{
    std::inplace_vector<int, 6> v(6, 9);
    std::println("Изначально, v = {}", v);
    v.resize(2);
    std::println("После resize(2), v = {}", v);
    v.resize(4);
    std::println("После resize(4), v = {}", v);
    v.resize(6, -1);
    std::println("После resize(6, -1), v = {}", v);
    try
    {
        std::print("Попытка resize(13): ");
        v.resize(13); // выбрасывает исключение, потому что count > N; v остается неизменным
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("ex.what(): {}", ex.what());
    }
    std::println("После исключения, v = {}", v);
}

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

Initially, v = [9, 9, 9, 9, 9, 9]
After resize(2), v = [9, 9]
After resize(4), v = [9, 9, 0, 0]
After resize(6, -1), v = [9, 9, 0, 0, -1, -1]
Trying resize(13): ex.what(): std::bad_alloc
After exception, v = [9, 9, 0, 0, -1, -1]


Смотрите также

[static]
возвращает максимально возможное количество элементов
(публичная статическая функция-член)
возвращает количество элементов
(публичная функция-член)
[static]
возвращает количество элементов, которое может содержаться в выделенной в данный момент памяти
(публичная статическая функция-член)
проверяет, является ли контейнер пустым
(публичная функция-член)