Spec-Zone.ru › C++

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

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

Изменяет размер контейнера так, чтобы он содержал count элементов; ничего не делает, если count == size().

Если текущий размер больше count, контейнер сокращается до первых count элементов.

Если текущий размер меньше count, то:

1) Добавляются дополнительные элементы, вставленные по умолчанию.
2) Добавляются дополнительные копии value.

Параметры

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

Сложность

Линейная относительно разницы между текущим размером и count.

Исключения

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

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

Пример

#include <inplace_vector>
#include <print>

int main()
{
    std::inplace_vector<int, 6> v(6, 9);
    std::println("Initially, v = {}", v);

    v.resize(2);
    std::println("After resize(2), v = {}", v);

    v.resize(4);
    std::println("After resize(4), v = {}", v);

    v.resize(6, -1);
    std::println("After resize(6, -1), v = {}", v);

    try
    {
        std::print("Trying resize(13): ");
        v.resize(13); // throws, because count > N; v is left unchanged
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("ex.what(): {}", ex.what());
    }
    std::println("After exception, 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]

См. также

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

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

Spec-Zone.ru

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