Vector de vectores en C++ STL con ejemplos

Requisito previo: Vectores en C++ STL

Los vectores se conocen como arrays 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.

Vector de vectores es un vector bidimensional con un número variable de filas donde cada fila es un vector. Cada índice de vector almacena un vector que se puede recorrer y acceder mediante iteradores . Es similar a un Array de Vectores pero con propiedades dinámicas.

Sintaxis:

vector<vector<data_type>> vec;

Ejemplo:

vector<vector<int>> vec{ { 1, 2, 3 }, 
                         { 4, 5, 6 }, 
                         { 7, 8, 9, 4 } }; 
where vec is the vector of vectors with different
      number of elements in different rows

Inserción en Vector de Vectores

Los elementos se pueden insertar en un vector utilizando la función push_back() de C++ STL.

El siguiente ejemplo demuestra la operación de inserción en un vector de vectores. El código crea un vector 2D usando la función push_back() y luego muestra la array.

Sintaxis:

vector_name.push_back(value)

where value refers to the element
      to be added in the back of the vector

Ejemplo 1:

v2 = {1, 2, 3}
v1.push_back(v2);

Esta función empuja el vector v2 al vector de vectores v1. Por lo tanto, v1 se convierte en { {1, 2, 3} }.

Ejemplo 2:

v2 = {4, 5, 6}
v1.push_back(v2);

Esta función empuja el vector v2 al vector existente de los vectores v1 y v1 se convierte en v1 = { {1, 2, 3}, {4, 5, 6} }

A continuación se muestra el ejemplo para demostrar la inserción en un vector de vectores.

// C++ program to demonstrate insertion
// into a vector of vectors
  
#include <iostream>
#include <vector>
using namespace std;
  
// Defining the rows and columns of
// vector of vectors
#define ROW 4
#define COL 5
  
int main()
{
    // Initializing the vector of vectors
    vector<vector<int> > vec;
  
    // Elements to insert in column
    int num = 10;
  
    // Inserting elements into vector
    for (int i = 0; i < ROW; i++) {
        // Vector to store column elements
        vector<int> v1;
  
        for (int j = 0; j < COL; j++) {
            v1.push_back(num);
            num += 5;
        }
  
        // Pushing back above 1D vector
        // to create the 2D vector
        vec.push_back(v1);
    }
  
    // Displaying the 2D vector
    for (int i = 0; i < vec.size(); i++) {
        for (int j = 0; j < vec[i].size(); j++)
            cout << vec[i][j] << " ";
        cout << endl;
    }
    return 0;
}
Producción:

10 15 20 25 30 
35 40 45 50 55 
60 65 70 75 80 
85 90 95 100 105

Eliminación o eliminación en un vector de vectores

Los elementos se pueden eliminar de un vector de vectores usando la función pop_back() de C++ STL.

El siguiente ejemplo demuestra la operación de eliminación en un vector de vectores. El código elimina elementos de un vector 2D usando la función pop_back() y luego muestra la array.
Sintaxis:

vector_name[row_position].pop_back()

Ejemplo 1: Sea el vector de vectores vector v = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }

v[2].pop_back()

Esta función elimina el elemento 9 del último vector de fila. Por lo tanto, v se convierte en { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8 } }.

Ejemplo 2:

v[1].pop_back()

Esta función elimina el elemento 6 del último vector de la segunda fila. Por lo tanto, v se convierte en { { 1, 2, 3 }, { 4, 5 }, { 7, 8 } }.

A continuación se muestra el ejemplo para demostrar la eliminación de un vector de vectores.

// C++ program to demonstrate removal
// from a vector of vectors
  
#include <iostream>
#include <vector>
using namespace std;
  
// Driver Method
int main()
{
    // Initializing 2D vector "vect" with
    // sample values
    vector<vector<int> > vec{ { 1, 2, 3 },
                              { 4, 5, 6 },
                              { 7, 8, 9 } };
  
    // Removing elements from the
    // last row of the vector
    vec[2].pop_back();
    vec[1].pop_back();
  
    // Displaying the 2D vector
    for (int i = 0; i < 3; i++) {
        for (
            auto it = vec[i].begin();
            it != vec[i].end(); it++)
            cout << *it << " ";
        cout << endl;
    }
    return 0;
}
Producción:

1 2 3 
4 5 
7 8

Recorrido de un vector de vectores

El vector de vectores se puede recorrer usando los iteradores en C++. El siguiente código demuestra el recorrido de un vector 2D.

Sintaxis:

for i in [0, n)
{
    for (iterator it = v[i].begin();
         it != v[i].end(); it++) 
   {
        // Operations to be done
        // For example to print
        print(*it)
    }
}

A continuación se muestra el ejemplo para demostrar el recorrido en un vector de vectores.

// C++ code to demonstrate traversal
// of a 2D vector
  
#include <iostream>
#include <vector>
using namespace std;
  
// Driver Method
int main()
{
    // Initializing 2D vector "vect" with
    // sample values
    vector<vector<int> > vec{ { 1, 2, 3 },
                              { 4, 5, 6 },
                              { 7, 8, 9 } };
  
    // Displaying the 2D vector
    for (int i = 0; i < 3; i++) {
        for (
            auto it = vec[i].begin();
            it != vec[i].end(); it++)
            cout << *it << " ";
        cout << endl;
    }
  
    return 0;
}
Producción:

1 2 3 
4 5 6 
7 8 9

Publicación traducida automáticamente

Artículo escrito por Chinmoy Lenka y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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