Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(1)
void resize( size_type count );
(desde C++11)
(hasta C++20)
constexpr void resize( size_type count );
(desde C++20)
(2)
void resize( size_type count, T value = T() );
(hasta C++11)
void resize( size_type count, const value_type& value );
(desde C++11)
(hasta C++20)
constexpr void resize( size_type count, const value_type& value );
(desde C++20)

Cambia el tamaño del contenedor para que contenga count elementos.

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,

1) se añaden elementos adicionales insertados por defecto.
2) se añaden copias adicionales de value.

Contenido

[editar] Parámetros

count - Nuevo tamaño del contenedor.
value - El valor con el cual inicializar los nuevos elementos.
Requisitos de tipo
-
T debe satisfacer los requisitos de InsertablePorMovimiento y InsertablePorDefecto para poder usar la sobrecarga (1).
-
T debe satisfacer los requisitos de InsertablePorCopia para poder usar la sobrecarga (2).

[editar] Valor de retorno

(Ninguno)

[editar] Complejidad

Lineal en la diferencia entre el tamaño actual y count. Complejidad adicional posible debido a la reasignación de memoria si la capacidad es menor que count.

Excepciones

Si se lanza una excepción, esta función no tiene efecto (garantía de excepción fuerte).

En la sobrecarga (1), si el constructor de movimiento de T no es noexcept y T no es CopyInsertable en *this, el vector utilizará el constructor de movimiento que lanza una excepción. Si lanza, se anula la garantía y los efectos no están especificados.

(desde C++11)

[editar] Notas

Si la inicialización de valor en la sobrecarga (1) no se desea, por ejemplo, si los elementos son de un tipo no clase y no se necesita ponerlos a cero, esto se puede evitar proporcionando una implementación de Allocator::construct personalizada.
La capacidad del vector nunca se reduce cuando se cambia el tamaño a un tamaño más pequeño porque eso invalidaría todos los iteradores, en lugar de solo los que serían invalidados por la secuencia equivalente de llamadas a pop_back().

[editar] Ejemplo

#include <iostream>
#include <vector>
int main()
{
    std::vector<int> c = {1, 2, 3};
    std::cout << "El objeto tipo vector alberga: ";
    for(const auto& el: c) std::cout << el << ' ';
    std::cout << '\n';
    c.resize(5);
    std::cout << "Después de aumentar el tamaño a 5: ";
    for(const auto& el: c) std::cout << el << ' ';
    std::cout << '\n';
    c.resize(2);
    std::cout << "Después de disminuir el tamaño 2: ";
    for(const auto& el: c) std::cout << el << ' ';
    std::cout << '\n';
    c.resize(6, 4);
    std::cout << "Después de aumentar el tamaño a 6 (inicializador = 4): ";
    for(const auto& el: c) std::cout << el << ' ';
    std::cout << '\n';
}

Salida:

El objeto tipo vector alberga: 1 2 3
Después de aumentar el tamaño a 5: 1 2 3 0 0
Después de disminuir el tamaño 2: 1 2
Después de aumentar el tamaño a 6 (inicializador = 4): 1 2 4 4 4 4

[editar] Véase también

Devuelve el número de elementos.
(función miembro pública) [editar]
Inserta elementos
(función miembro pública) [editar]
Borra elementos
(función miembro pública) [editar]