Vector en C++ STL

Los vectores son matrices dinámicas que tienen la capacidad de cambiar automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja su almacenamiento automáticamente. Los elementos vectoriales se colocan en un almacén asociativo para que se pueda acceder a ellos y recorrerlos mediante iteradores. En los vectores, los datos se ingresan al final. La inserción al final lleva una cantidad de tiempo diferente, ya que a veces es posible que sea necesario expandir la matriz. Extraer el último elemento solo lleva un tiempo constante porque no se produce ningún cambio de tamaño. Las inserciones y eliminaciones están al principio o en medio de un tiempo lineal.

  1. start(): devuelve un iterador que apunta al primer elemento del vector
  2. end(): devuelve un iterador que apunta al elemento teórico que sigue al último elemento del vector
  3. rbegin(): devuelve un iterador inverso que apunta al último elemento del vector (inicio inverso). Se mueve del último elemento al primer elemento.
  4. rend(): devuelve un iterador inverso que apunta al elemento teórico antes del primer elemento en el vector (considerado el back-end)
  5. cbegin(): devuelve un iterador constante que apunta al primer elemento del vector.
  6. cend(): devuelve un iterador constante que apunta al elemento teórico que sigue al último elemento del vector.
  7. crbegin(): devuelve un iterador inverso constante que apunta al último elemento del vector (inicio inverso). Se mueve del último elemento al primer elemento.
  8. crend(): devuelve un iterador inverso constante que apunta al elemento teórico antes del primer elemento en el vector (considerado backend)

Tabla de contenidos

CPP



// C++ program to illustrate the
// iterators in vector
#include <iostream>
#include <vector>
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 << "nOutput of cbegin and cend: ";
    for (auto i = g1.cbegin(); i != g1.cend(); ++i)
        cout << *i << " ";
    cout << "nOutput of rbegin and rend: ";
    for (auto ir = g1.rbegin(); ir != g1.rend(); ++ir)
        cout << *ir << " ";
    cout << "nOutput 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

  1. size(): devuelve el número de elementos del vector.
  2. max_size(): devuelve el número máximo de elementos que puede contener el vector.
  3. capacidad(): devuelve la cantidad de espacio de almacenamiento actualmente asignado al vector expresado como el número de elementos.
  4. redimensionar: cambia el tamaño del contenedor para que se ajuste a los elementos.
  5. vacío () – Devuelve si el contenedor está vacío.
  6. shrink_to_fit(): reduce la capacidad del contenedor para que se ajuste a su tamaño y elimina todos los elementos por encima de la capacidad.
  7. reserve(): solicita que la capacidad del vector sea al menos suficiente para contener n elementos.

CPP



// C++ program to illustrate the
// capacity function in vector
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> g1;
    for (int i = 1; i <= 5; i++)
        g1.push_back(i);
    cout << "Size : " << g1.size();
    cout << "nCapacity : " << g1.capacity();
    cout << "nMax_Size : " << g1.max_size();
    // resizes the vector size to 4
    g1.resize(4);
    // prints the vector size after resize()
    cout << "nSize : " << g1.size();
    // checks if the vector is empty or not
    if (g1.empty() == false)
        cout << "nVector is not empty";
    else
        cout << "nVector is empty";
    // Shrinks the vector
    g1.shrink_to_fit();
    cout << "nVector elements are: ";
    for (auto it = g1.begin(); it != g1.end(); it++)
        cout << *it << " ";
    return 0;
}

Producción:

Size : 5
Capacity : 8
Max_Size : 4611686018427387903
Size : 4
Vector is not empty
Vector elements are: 1 2 3 4

Acceso al elemento:

  1. operador de referencia [g] – Se devuelve una referencia al elemento en la posición ‘g’ en el vector
  2. at(g) – Devuelve una referencia al elemento en la posición ‘g’ en el vector
  3. front(): devuelve una referencia al primer elemento del vector
  4. return(): devuelve una referencia al último elemento del vector
  5. data(): devuelve un puntero directo a la matriz de memoria que el vector usa internamente para almacenar los elementos que posee.

CPP



// C++ program to illustrate the
// element access in vector
#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> g1;
    for (int i = 1; i <= 10; i++)
        g1.push_back(i * 10);
    cout << "nReference operator [g] : g1[2] = " << g1[2];
    cout << "nat : g1.at(4) = " << g1.at(4);
    cout << "nfront() : g1.front() = " << g1.front();
    cout << "nback() : g1.back() = " << g1.back();
    // pointer to the first element
    int* pos = g1.data();
    cout << "nThe first element is " << *pos;
    return 0;
}

Producción:

Reference operator [g] : g1[2] = 30
at : g1.at(4) = 50
front() : g1.front() = 10
back() : g1.back() = 100
The first element is 10

Modificadores:

  1. asignar (): asigna un nuevo valor a los elementos del vector reemplazando los antiguos
  2. push_back () – Empuja los elementos en un vector desde la parte posterior
  3. pop_back (): se utiliza para hacer estallar o eliminar elementos de un vector desde la parte posterior.
  4. insert() – Inserta nuevos elementos antes del elemento en la posición especificada
  5. delete(): se utiliza para eliminar elementos de un contenedor desde la posición o rango especificado.
  6. swap(): se utiliza para intercambiar el contenido de un vector con otro vector del mismo tipo. Los tamaños pueden variar.
  7. clear(): se utiliza para eliminar todos los elementos del contenedor de vectores
  8. emplace() – Extiende el contenedor insertando un nuevo elemento en la posición
  9. emplace_back(): se usa para insertar un nuevo elemento en el contenedor del vector, el nuevo elemento se agrega al final del vector

CPP



// C++ program to illustrate the
// Modifiers in vector
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main()
{
    // Assign vector
    vector<int> v;
    // fill the array with 10 five times
    v.assign(5, 10);
    cout << "The vector elements are: ";
    for (int i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    // inserts 15 to the last position
    v.push_back(15);
    int n = v.size();
    cout << "nThe last element is: " << v[n - 1];
    // removes last element
    v.pop_back();
    // prints the vector
    cout << "nThe vector elements are: ";
    for (int i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    // inserts 5 at the beginning
    v.insert(v.begin(), 5);
    cout << "nThe first element is: " << v[0];
    // removes the first element
    v.erase(v.begin());
    cout << "nThe first element is: " << v[0];
    // inserts at the beginning
    v.emplace(v.begin(), 5);
    cout << "nThe first element is: " << v[0];
    // Inserts 20 at the end
    v.emplace_back(20);
    n = v.size();
    cout << "nThe last element is: " << v[n - 1];
    // erases the vector
    v.clear();
    cout << "nVector size after erase(): " << v.size();
    // two vector to perform swap
    vector<int> v1, v2;
    v1.push_back(1);
    v1.push_back(2);
    v2.push_back(3);
    v2.push_back(4);
    cout << "nnVector 1: ";
    for (int i = 0; i < v1.size(); i++)
        cout << v1[i] << " ";
    cout << "nVector 2: ";
    for (int i = 0; i < v2.size(); i++)
        cout << v2[i] << " ";
    // Swaps v1 and v2
    v1.swap(v2);
    cout << "nAfter Swap nVector 1: ";
    for (int i = 0; i < v1.size(); i++)
        cout << v1[i] << " ";
    cout << "nVector 2: ";
    for (int i = 0; i < v2.size(); i++)
        cout << v2[i] << " ";
}

Producción:

The 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 temporal de realizar varias operaciones en vectores es:

  • Acceso aleatorio – constante O(1)
  • Insertar o quitar los elementos al final – constante O(1)
  • Insertar o quitar elementos: lineal en distancia al final del vector O(N)
  • Información de tamaño: constante O(1)
  • Transformar el vector – Lineal O(N)

Todas las funciones vectoriales:

Escriba un comentario si encuentra algún problema o si desea compartir más información sobre el tema tratado anteriormente.

Mis notas personales
flecha_caer_arriba

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *