Los vectores son lo mismo que las matrices dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja automáticamente su almacenamiento. Los elementos vectoriales se colocan en un almacenamiento contiguo para que se pueda acceder a ellos y recorrerlos mediante iteradores. En los vectores, los datos se insertan al final. La inserción al final requiere un tiempo diferencial, ya que a veces es posible que sea necesario ampliar la matriz. Eliminar el último elemento solo requiere un tiempo constante porque no se cambia el tamaño. Insertar y borrar al principio o en el medio es lineal en el tiempo.
¿Qué es std::vector en C++?
estándar::vector en C++ es la plantilla de clase que contiene el contenedor de vectores y sus funciones miembro. Se define dentro del archivo de cabecera. Las funciones miembro de la clase std::vector proporcionan varias funcionalidades a los contenedores de vectores.
Sintaxis para declarar vectores en C++
std::vector vectorName;>
donde el tipo de datos es el tipo de datos de cada elemento del vector. Puede eliminar std:: si ya ha utilizado el espacio de nombres std.
Inicialización de Vector en C++
Podemos inicializar un vector de las siguientes maneras:
1. Inicialización mediante lista
Esta inicialización se realiza con una declaración. Aquí, pasamos la lista de elementos al constructor de vectores para crear un vector con los elementos especificados.
vector name({ value1, value2, value3 .... });> 2. Inicialización Con un valor único
Esta inicialización también se realiza con declaración. Aquí, especificamos el tamaño del vector y luego inicializamos cada elemento del vector con el valor.
vector name(size, value);>
3. Inicialización desde otro vector
Esta inicialización se utiliza para crear un vector que es una copia exacta de other_vec.
vector name(other_vec);>
Algunas funciones miembro de uso común de la clase std::vector se escriben a continuación:
Iteradores
- comenzar() – Devuelve un iterador que apunta al primer elemento del vector.
- fin() – Devuelve un iterador que apunta al elemento teórico que sigue al último elemento del vector.
- comenzar() – Devuelve un iterador inverso que apunta al último elemento del vector (comienzo inverso). Se mueve del último al primer elemento.
- prestar() – Devuelve un iterador inverso que apunta al elemento teórico que precede al primer elemento del vector (considerado como extremo inverso)
- comenzar() – Devuelve un iterador constante que apunta al primer elemento del vector.
- algunos() – Devuelve un iterador constante que apunta al elemento teórico que sigue al último elemento del vector.
- crbegin() – Devuelve un iterador inverso constante que apunta al último elemento del vector (comienzo inverso). Se mueve del último al primer elemento.
- credo() – Devuelve un iterador inverso constante que apunta al elemento teórico que precede al primer elemento del vector (considerado como extremo inverso)
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Output of begin and end: '>;> >for> (>auto> i = g1.begin(); i != g1.end(); ++i)> >cout << *i <<>' '>;> > >cout <<>'
Output of cbegin and cend: '>;> >for> (>auto> i = g1.cbegin(); i != g1.cend(); ++i)> >cout << *i <<>' '>;> > >cout <<>'
Output of rbegin and rend: '>;> >for> (>auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> >cout << *ir <<>' '>;> > >cout <<>'
Output of crbegin and crend : '>;> >for> (>auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> >cout << *ir <<>' '>;> > >return> 0;> }> |
>
>Producción
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
Capacidad
- tamaño() – Devuelve el número de elementos del vector.
- tamaño máximo() – Devuelve el número máximo de elementos que puede contener el vector.
- capacidad() – Devuelve el tamaño del espacio de almacenamiento actualmente asignado al vector expresado como número de elementos.
- cambiar tamaño(n) – Cambia el tamaño del contenedor para que contenga 'n' elementos.
- vacío() – Devuelve si el contenedor está vacío.
- encoger_para_adaptar() – Reduce la capacidad del contenedor para adaptarlo a su tamaño y destruye todos los elementos más allá de la capacidad.
- reservar() – Solicita que la capacidad del vector sea al menos suficiente para contener n elementos.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Size : '> << g1.size();> >cout <<>'
Capacity : '> << g1.capacity();> >cout <<>'
Max_Size : '> << g1.max_size();> > >// resizes the vector size to 4> >g1.resize(4);> > >// prints the vector size after resize()> >cout <<>'
Size : '> << g1.size();> > >// checks if the vector is empty or not> >if> (g1.empty() ==>false>)> >cout <<>'
Vector is not empty'>;> >else> >cout <<>'
Vector is empty'>;> > >// Shrinks the vector> >g1.shrink_to_fit();> >cout <<>'
Vector elements are: '>;> >for> (>auto> it = g1.begin(); it != g1.end(); it++)> >cout << *it <<>' '>;> > >return> 0;> }> |
>
primavera y primavera mvc
>Producción
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Acceso a elementos
- operador de referencia [g] – Devuelve una referencia al elemento en la posición 'g' en el vector
- en(g) – Devuelve una referencia al elemento en la posición 'g' en el vector
- frente() – Devuelve una referencia al primer elemento del vector.
- atrás() – Devuelve una referencia al último elemento del vector.
- C++
tira de pitón
// C++ program to illustrate the>// element access in vector>#include>using>namespace>std;>>int>main()>{>>vector<>int>>g1;>>>for>(>int>i = 1; i <= 10; i++)>>g1.push_back(i * 10);>>>cout <<>' Reference operator [g] : g1[2] = '><< g1[2];>>>cout <<>' at : g1.at(4) = '><< g1.at(4);>>>cout <<>' front() : g1.front() = '><< g1.front();>>>cout <<>' back() : g1.back() = '><< g1.back();>>>// pointer to the first element>>int>* pos = g1.data();>>>cout <<>' The first element is '><< *pos;>>return>0;>}>>
>
ProducciónReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modificadores
- asignar() – Asigna un nuevo valor a los elementos del vector reemplazando los antiguos.
- hacer retroceder() – Empuja los elementos en un vector desde atrás.
- pop_back() – Se utiliza para resaltar o eliminar elementos de un vector desde la parte posterior.
- insertar() – Inserta nuevos elementos antes del elemento en la posición especificada.
- borrar() – Se utiliza para eliminar elementos de un contenedor desde la posición o rango especificado.
- intercambio() – Se utiliza para intercambiar el contenido de un vector con otro vector del mismo tipo. Los tamaños pueden diferir.
- claro() – Se utiliza para eliminar todos los elementos del contenedor vectorial.
- emplazar() – Extiende el contenedor insertando un nuevo elemento en la posición
- emplace_back() – Se utiliza para insertar un nuevo elemento en el contenedor del vector, el nuevo elemento se agrega al final del vector.
C++
// C++ program to illustrate the>// Modifiers in vector>#include>#include>using>namespace>std;>>int>main()>{>>// Assign vector>>vector<>int>>en;>>>// fill the vector with 10 five times>>v.assign(5, 10);>>>cout <<>'The vector elements are: '>;>>for>(>int>i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vectorv1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); corte<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> >
>
ProducciónThe vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
La complejidad del tiempo para realizar varias operaciones en vectores es:
- Acceso aleatorio – constante O(1)
- Inserción o eliminación de elementos al final – constante O(1)
- Inserción o eliminación de elementos – lineal en la distancia hasta el final del vector O(N)
- Conociendo el tamaño – constante O(1)
- Cambiar el tamaño del vector: lineal O (N)
Todas las funciones miembro de std::vector
A continuación se muestra la lista de todas las funciones miembro de la clase std::vector en C++:
Función vectorial
Descripción
Agrega un elemento al final del vector. Elimina el último elemento del vector. Devuelve el número de elementos del vector. tamaño máximo()
Devuelve el número máximo de elementos que puede contener el vector. cambiar tamaño()
Cambia el tamaño del vector. Comprueba si el vector está vacío. operador[]
Accede al elemento en una posición específica. en()
Accede al elemento en una posición específica, con verificación de límites. frente()
Accede al primer elemento del vector. atrás()
Accede al último elemento del vector. comenzar()
Devuelve un iterador que apunta al primer elemento del vector. fin()
Devuelve un iterador que apunta al elemento pasado el final del vector. comenzar()
Devuelve un iterador inverso que apunta al último elemento del vector. prestar()
Devuelve un iterador inverso que apunta al elemento que precede al primer elemento del vector. comenzar
Devuelve const_iterator al principio algunos
Devuelve const_iterator al final comenzar
Devuelve const_reverse_iterator al principio inverso creer
código fibonacci java
Devuelve const_reverse_iterator al final inverso Inserta elementos en una posición específica del vector. Elimina elementos de una posición o rango específico en el vector. intercambio()
Intercambia el contenido del vector con el de otro vector. Elimina todos los elementos del vector. emplazar()
Construye e inserta un elemento en el vector. emplace_back()
Construye e inserta un elemento al final del vector. asignar()
Asigna nuevos valores a los elementos del vector reemplazando los antiguos. capacidad()
Devuelve el tamaño del espacio de almacenamiento actualmente asignado al vector. reservar()
Solicita que la capacidad del vector sea al menos suficiente para contener un número específico de elementos. encoger_para_adaptar()
Reduce el uso de memoria liberando espacio no utilizado. get_allocador
Devuelve una copia del objeto asignador asociado con el vector. Debe leer:
- ¿Cómo comprobar si un vector contiene un elemento determinado en C++?
- Cómo encontrar el índice de un elemento determinado en un vector en C++
- Ordenar un vector en C++