std::vector<T,Allocator>::resize - cppreference.com
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
| (1) | ||
|
|
(desde C++11) (hasta C++20) |
|
|
|
(desde C++20) | |
| (2) | ||
|
|
(hasta C++11) | |
|
|
(desde C++11) (hasta C++20) |
|
|
|
(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,
2) se añaden copias adicionales de value.
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).
| ||
Valor de retorno
(Ninguno)
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 |
(desde C++11) |
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().
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