Un vector 2D es un vector del vector. ¡Al igual que las matrices 2D, podemos declarar y asignar valores a un vector 2D!
Suponiendo que está familiarizado con un vector normal en C++, con la ayuda de un ejemplo, a continuación demostramos en qué se diferencia un vector 2D de un vector normal:
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Elemento uno con 2 valores. */ {1, 2}, /* Elemento dos con 3 valores. */ {4, 5, 6}, /* Elemento tres con 4 valores. */ {7, 8, 9, 10} }; /* Ahora imprimimos el vector que acabamos de definir usando un bucle for anidado simple. */ para (int i = 0; i { para (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
En un vector 2D, cada elemento es un vector.
Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)
C++
/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(fila); /* En la línea 21 creamos un vector 2D y le asignamos una capacidad de 'fila' (en este caso 5) unidades. */ /* Ahora procederemos a crear la estructura de nuestro vector 2D asignando el valor de filas y columnas a través de un bucle for anidado. */ for(int i = 0; i { /* Declarando el tamaño de la columna. */ int col = column[i]; /* En la línea 43 declaramos la i-ésima fila con el tamaño de la columna. Creamos un vector normal de capacidad 'col' que en cada iteración del bucle for definirá los valores dentro de cada fila */ vec[i] = vector. |
>
>Producción
1 2 3 4 5 6 7 8 9>
Complejidad del tiempo: O(N*N)
Espacio Auxiliar: O(N*N)
Otro enfoque para acceder a los elementos del vector:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Producción
1 2 3 4 5 6 7 8 9>
Complejidad del tiempo: O(N*N)
Espacio Auxiliar: O(N*N)
Al igual que las matrices irregulares de Java, cada elemento de un vector 2D puede contener una cantidad diferente de valores.
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Elemento uno con 2 valores. */ {1, 2}, /* Elemento dos con 3 valores. */ {4, 5, 6}, /* Elemento tres con 4 valores. */ {7, 8, 9, 10} }; /* Ahora imprimimos el vector que acabamos de definir usando un bucle for anidado simple. */ para (int i = 0; i { para (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Producción
1 2 4 5 6 7 8 9 10>
Problema del ejercicio: Defina el vector 2D con diferentes tamaños de columnas.
Ejemplos:
Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>
Los vectores 2D a menudo se tratan como una matriz con filas y columnas en su interior. Debajo del capó, en realidad son elementos del vector 2D.
Primero declaramos una variable entera llamada fila y luego una matriz llamada columna que contendrá el valor del tamaño de cada fila.
Luego de eso procedemos a inicializar la memoria de cada fila por el tamaño de la columna.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vector |
modelo tcp e ip
>
>Producción
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Otro enfoque
Supongamos que queremos inicializar un vector 2D de norte filas y metro columnas, con valor 0.
C++
>
>Producción
0 0 0 0 0 0 0 0 0 0 0 0>
Complejidad del tiempo: EN M)
Espacio Auxiliar: EN M)
Otro enfoque más:
Supongamos que queremos crear un vector 2D de norte filas y metro columnas y valores de entrada.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vector |
>
>Producción
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Complejidad del tiempo: EN M)
Espacio Auxiliar: EN M)
Esperamos que termine este artículo con una mejor comprensión de los vectores 2D y que ahora tenga la confianza suficiente para aplicarlos por su cuenta.