Spec-Zone.ru › C++

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

void resize( size_type count );
(1) (since C++11)
void resize( size_type count, const value_type& value );
(2) (since C++11)

Изменяет размер контейнера на count элементов, ничего не делает, если count == std::distance(begin(), end()) (т.е. если count равно текущему размеру).

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

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

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

Параметры

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

Возвращаемое значение

(нет)

Сложность

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

Примечания

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

Пример

#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

См. также

insert_after
вставляет элементы после элемента
(публичный член-функция)
erase_after
удаляет элемент после элемента
(публичный член-функция)

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

Spec-Zone.ru

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