std::vector
| Definido en el archivo de encabezado <vector>
|
||
| template< class T, |
(1) | |
| namespace pmr { template <class T> |
(2) | (desde C++17) |
std::vector En un contenedor de secuencia que encapsula arrays de tamaño dinámico.|
Los elementos se almacenan contiguamente, lo que significa que los elementos pueden accederse no solo a través de iteradores, sino también usando desplazamientos a punteros regulares a elementos. Esto significa que un puntero a un elemento de un vector puede pasarse a cualquier función que espera un puntero a un elemento de un array. |
(desde C++03) |
El almacenamiento del vector se maneja automáticamente, ampliándose y contrayéndose según sea necesario. Los vectores suelen ocupar más espacio que los arrays estáticos, porque se asigna más memoria para manejar el crecimiento futuro. De esta manera, no es necesario reasignar un vector cada vez que se inserta un elemento, sino solo cuando se agota la memoria adicional. La cantidad total de memoria asignada se puede consultar usando la función capacity(). Se puede devolver memoria adicional al sistema mediante una llamada a shrink_to_fit(). (desde C++11)
Las reasignaciones son habitualmente operaciones costosas en términos de rendimiento. Puede usarse la función reserve() para eliminar reasignaciones si el número de elementos se conoce de antemano.
La complejidad (eficiencia) de las operaciones comunes en vectores es la siguiente:
- Acceso aleatorio - Constante O(1)
- Inserción o remoción de elementos al final - Constante amortizada O(1)
- Inserción o remoción de elementos - Lineal con respecto a la distancia hasta el final del vector O(n)
std::vector (para T distinto de bool) cumple con los requisitos de Container, AllocatorAwareContainer, SequenceContainer , ContiguousContainer (desde C++17) y ReversibleContainer.
Contenido |
[editar] Parámetros de plantilla
| T | - | El tipo de los elementos.
| ||||||
| Allocator | - | Un asignador que se usa para adquirir/liberar memoria y para construir/destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de Allocator. El comportamiento está indefinido si Allocator::value_type no es el mismo que T. |
[editar] Especializaciones
La biblioteca estándar proporciona una especialización de std::vector para el tipo bool, que puede optimizarse para optimizar espacio.
| Conjunto de bits eficiente en el uso de espacio. (plantilla de clase) |
[editar] Invalidación de iteradores
| Operaciones | Invalidados |
|---|---|
| Todas las operaciones de solo lectura | Nunca |
| swap, std::swap | end() |
| clear, operator=, assign | Siempre |
| reserve, shrink_to_fit | Si el vector cambió de capacidad, todos ellos. Si no, ninguno. |
| erase | Los elementos borrados y todos los elementos después de ellos (incluyendo a end()) |
| push_back, emplace_back | Si el vector cambió de capacidad, todos ellos. Si no, solamente end(). |
| insert, emplace | Si el vector cambió de capacidad, todos ellos. Si no, solamente aquellos en o después del punto de inserción (incluyendo a end()). |
| resize | Si el vector cambió de capacidad, todos ellos. Si no, solamente end() y cualquier elemento borrado. |
| pop_back | El elemento borrado y end(). |
[editar] Tipos miembro
| Tipo miembro | Definición |
value_type
|
T
|
allocator_type
|
Allocator
|
size_type
|
Tipo entero sin signo (por lo general std::size_t) |
difference_type
|
Tipo entero con signo (por lo general std::ptrdiff_t) |
reference
|
Allocator::reference (hasta C++11)value_type& (desde C++11)
|
const_reference
|
Allocator::const_reference (hasta C++11)const value_type& (desde C++11)
|
pointer
|
Allocator::pointer (hasta C++11)std::allocator_traits<Allocator>::pointer (desde C++11) |
const_pointer
|
Allocator::const_pointer (hasta C++11) std::allocator_traits<Allocator>::const_pointer (desde C++11) |
iterator
|
LegacyRandomAccessIterator |
const_iterator
|
LegacyRandomAccessIterator constante |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[editar] Funciones miembro
Construye el vector (función miembro pública) | |
| destruye el Original: destructs the The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. vector (función miembro pública) | |
| asigna valores para el contenedor Original: assigns values to the container The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| asigna valores para el contenedor Original: assigns values to the container The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| devuelve el asignador asociado Original: returns the associated allocator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
Acceso a elementos | |
| Accede al elemento especificado con comprobación de límites (función miembro pública) | |
| Accede al elemento especificado (función miembro pública) | |
| Accede al primer elemento (función miembro pública) | |
| Accede al último elemento (función miembro pública) | |
| (C++11) |
Acceso directo al array subyacente (función miembro pública) |
Iteradores | |
| (C++11) |
Devuelve un iterador al principio (función miembro pública) |
| (C++11) |
Devuelve un iterador al final (función miembro pública) |
| (C++11) |
Devuelve un iterador inverso al principio (función miembro pública) |
| (C++11) |
Devuelve un iterador inverso al final (función miembro pública) |
Capacidad | |
| Comprueba si el contenedor está vacío (función miembro pública) | |
| Devuelve el número de elementos (función miembro pública) | |
| Devuelve el número máximo posible de elementos (función miembro pública) | |
| reserva capacidad de almacenamiento Original: reserves storage The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| devuelve el número de elementos que se pueden almacenar en el almacenamiento asignado actualmente Original: returns the number of elements that can be held in currently allocated storage The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| (C++11) |
reduce el uso de memoria liberando memoria no utilizada Original: reduces memory usage by freeing unused memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) |
Modificadores | |
| borra el contenido Original: clears the contents The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| inserta elementos Original: inserts elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| (C++11) |
construye el elemento en el sitio Original: constructs element in-place The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) |
| borra elementos Original: erases elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| agrega elementos al final Original: adds elements to the end The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| (C++11) |
construye elementos en lugar de al final Original: constructs elements in-place at the end The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) |
| elimina el último elemento Original: removes the last element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| cambia el número de elementos almacenados Original: changes the number of elements stored The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro pública) | |
| Intercambia el contenido (función miembro pública) | |
[editar] Funciones no miembro
| (eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(C++20) |
Compara lexicográficamente los valores de vector (plantilla de función) |
| Especializa el algoritmo std::swap. (plantilla de función) | |
| Borra todos los elementos que satisfacen un criterio específico (plantilla de función) |
[editar] Guías de deducción(desde C++17)
[editar] Ejemplo
#include <iostream> #include <vector> int main() { // Crear un vector que contiene enteros std::vector<int> v = {7, 5, 16, 8}; // Añadir dos enteros más al vector v.push_back(25); v.push_back(13); // Iterar e imprimir los valores del vector for(int n : v) { std::cout << n << '\n'; } }
Salida:
7 5 16 8 25 13

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
