Namespaces
Variants

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

From cppreference.net

void resize ( size_type count ) ;
(1) (constexpr desde C++26)
void resize ( size_type count, const value_type & value ) ;
(2) (constexpr desde C++26)

Redimensiona el contenedor para contener count elementos:

  • Si count es igual al tamaño actual, no hace nada.
  • Si el tamaño actual es mayor que count , el contenedor se reduce a sus primeros count elementos.
  • Si el tamaño actual es menor que count , entonces:
1) Se añaden copias adicionales de T ( ) (hasta C++11) elementos insertados por defecto (desde C++11) .
2) Se añaden copias adicionales de value .

Contenidos

Parámetros

count - nuevo tamaño del contenedor
value - el valor con el que inicializar los nuevos elementos
Requisitos de tipo
-

Si se cumple la siguiente condición, el comportamiento no está definido:

1) T no es DefaultInsertable en list .
2) T no es CopyInsertable en list .
(desde C++11)

Complejidad

Lineal en la diferencia entre el tamaño actual y count .

Notas

Si la inicialización por valor en la sobrecarga ( 1 ) no es deseable, por ejemplo, si los elementos son de tipo no-clase y no se necesita poner a cero, puede evitarse proporcionando un personalizado Allocator::construct .

Ejemplo

#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);
}

Salida:

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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 132 C++98 se utilizaron iteradores de acceso aleatorio para determinar el rango de borrado usar iteradores bidireccionales
LWG 679 C++98 resize() pasaba value por valor pasa por referencia constante
LWG 1420 C++98 el comportamiento de resize ( size ( ) ) no estaba especificado especificado

Véase también

devuelve el número máximo posible de elementos
(función miembro pública)
devuelve el número de elementos
(función miembro pública)
verifica si el contenedor está vacío
(función miembro pública)