X Tutup
The Wayback Machine - https://web.archive.org/web/20210506190655/https://es.cppreference.com/w/cpp/container/vector
Espacios de nombres
Variantes
Acciones

std::vector

De cppreference.com
< cpp‎ | container
 
 
 
 
Definido en el archivo de encabezado <vector>
template<

    class T,
    class Allocator = std::allocator<T>

> class vector;
(1)
namespace pmr {

    template <class T>
    using vector = std::vector<T, std::pmr::polymorphic_allocator<T>>;

}
(2) (desde C++17)
1) std::vector En un contenedor de secuencia que encapsula arrays de tamaño dinámico.
2) std::pmr::vector es una plantilla de alias que usa un asignador de memoria polimórfico.

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.
T debe cumplir con los requisitos de CopyAssignable y CopyConstructible. (hasta C++11)
Los requisitos que se imponen a los elementos dependen de las operaciones actuales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento sea un tipo completo y cumpla con los requisitos de Erasable, pero muchas funciones miembro imponen requisitos más estrictos. (desde C++11)
(hasta C++17)
Los requisitos que se imponen a los elementos dependen de las operaciones actuales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento cumpla con los requisitos de Erasable, pero muchas funciones miembro imponen requisitos más estrictos. Este contenedor (pero no sus miembros) se puede instanciar con un tipo de elemento incompleto si el asignador satisface los requisitos de completitud del asignador. (desde C++17)

[editar]

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]

[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]

[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 [editar]
allocator_type Allocator [editar]
size_type Tipo entero sin signo (por lo general std::size_t) [editar]
difference_type Tipo entero con signo (por lo general std::ptrdiff_t) [editar]
reference Allocator::reference (hasta C++11)
value_type& (desde C++11) [editar]
const_reference Allocator::const_reference (hasta C++11)
const value_type& (desde C++11) [editar]
pointer Allocator::pointer (hasta C++11)
std::allocator_traits<Allocator>::pointer (desde C++11) [editar]
const_pointer Allocator::const_pointer (hasta C++11)
std::allocator_traits<Allocator>::const_pointer (desde C++11) [editar]
iterator LegacyRandomAccessIterator [editar]
const_iterator LegacyRandomAccessIterator constante [editar]
reverse_iterator std::reverse_iterator<iterator> [editar]
const_reverse_iterator std::reverse_iterator<const_iterator> [editar]

[editar] Funciones miembro

Construye el vector
(función miembro pública) [editar]
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) [editar]
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) [editar]
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) [editar]
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) [editar]
Acceso a elementos
Accede al elemento especificado con comprobación de límites
(función miembro pública) [editar]
Accede al elemento especificado
(función miembro pública) [editar]
Accede al primer elemento
(función miembro pública) [editar]
Accede al último elemento
(función miembro pública) [editar]
(C++11)
Acceso directo al array subyacente
(función miembro pública) [editar]
Iteradores
Devuelve un iterador al principio
(función miembro pública) [editar]
(C++11)
Devuelve un iterador al final
(función miembro pública) [editar]
Devuelve un iterador inverso al principio
(función miembro pública) [editar]
Devuelve un iterador inverso al final
(función miembro pública) [editar]
Capacidad
Comprueba si el contenedor está vacío
(función miembro pública) [editar]
Devuelve el número de elementos
(función miembro pública) [editar]
Devuelve el número máximo posible de elementos
(función miembro pública) [editar]
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) [editar]
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) [editar]
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) [editar]
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) [editar]
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) [editar]
(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) [editar]
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) [editar]
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) [editar]
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) [editar]
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) [editar]
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) [editar]
Intercambia el contenido
(función miembro pública) [editar]

[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) [editar]
Especializa el algoritmo std::swap.
(plantilla de función) [editar]
Borra todos los elementos que satisfacen un criterio específico
(plantilla de función) [editar]

[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
X Tutup