Spec-Zone.ru › C++

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

void resize( size_type count );
(1)
void resize( size_type count, const value_type& value );
(2)

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

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

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

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

Параметры

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

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

(ничего)

Сложность

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

Примечания

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

Пример

#include <list>
#include <iostream>
 
void print(auto rem, const std::list<int>& c)
{
    for (std::cout << rem; const int el : c)
        std::cout << el << ' ';
    std::cout << '\n';    
}
 
int main()
{
    std::list<int> c = {1, 2, 3};
    print("The 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 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

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение, как опубликовано Правильное поведение
LWG 132 C++98 использовались итераторы с произвольным доступом для определения диапазона удаления использовать итераторы с двусторонним доступом
LWG 679 C++98 resize() передавалось value по значению передаётся по константной ссылке
LWG 1420 C++98 поведение resize(size()) не было определено определено

См. также

size
возвращает количество элементов
(общедоступный метод-член)
insert
вставляет элементы
(общедоступный метод-член)
erase
удаляет элементы
(общедоступный метод-член)

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

Spec-Zone.ru

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