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; }
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; }
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; }
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