Namespaces
Variants

std::forward_list<T,Allocator>:: resize

From cppreference.net

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

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

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

Содержание

Параметры

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

Сложность

Линейная по разнице между текущим размером и count . Дополнительная сложность возможна из-за обхода списка для достижения первого элемента для удаления/конечной позиции для вставки.

Примечания

Если инициализация значением в перегрузке ( 1 ) нежелательна, например, если элементы имеют неклассовый тип и обнуление не требуется, этого можно избежать, предоставив пользовательский Allocator::construct .

Пример

#include <forward_list>
#include <iostream>
void print(auto rem, const std::forward_list<int>& c)
{
    for (std::cout << rem; const int el : c)
        std::cout << el << ' ';
    std::cout << '\n';
}
int main()
{
    std::forward_list<int> c = {1, 2, 3};
    print("The forward_list holds: ", c);
    c.resize(5);
    print("After resize up to 5: ", c);
    c.resize(2);
    print("After resize down to 2: ", c);
    c.resize(6, 4);
    print("After resize up to 6 (initializer = 4): ", c);
}

Вывод:

The forward_list holds: 1 2 3
After resize up to 5: 1 2 3 0 0
After resize down to 2: 1 2
After resize up to 6 (initializer = 4): 1 2 4 4 4 4


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

возвращает максимально возможное количество элементов
(public member function)
проверяет, является ли контейнер пустым
(public member function)