logo

Vector 2D en C++ con tamaño definido por el usuario

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. (columna); for(int j = 0; j { vec[i][j] = j + 1; } } /* Ahora finalmente usamos un bucle for anidado simple para imprimir el vector 2D que acabamos de crear arriba. */ for(int yo = 0; yo { para (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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'>>
class='comments'>/* Código C++ para demostrar un vector 2D con elementos (vectores) dentro de él. */div>
clase='preprocesador'>#include div>
clase='preprocesador'>#include div>
class='palabra clave negrita'>usando>espacio de nombres>std; div>
clase='espacios indefinidos'> div>
clase='color1 negrita'>int>principal() div>
clase='simple'>{ div>
class='undefinidos espacios'>>/* A continuación inicializamos un vector 2D llamado 'vect' en la línea 12 y luego declaramos los valores en la línea 14, 15 y 16 respectivamente. */div>
clase='espacios indefinidos'> div>
class='espacios indefinidos'>>vectorclass='color1 negrita'>intclass='plain'>>> vect div>
clase='espacios indefinidos'>>{ div>
clase='espacios indefinidos'>>{1, 2, 3}, div>
clase='espacios indefinidos'>>{4, 5, 6}, div>
clase='espacios indefinidos'>>{7, 8, 9} div>
class='espacios indefinidos'>>}; div>
clase='espacios indefinidos'> div>
class='espacios indefinidos'>>/* Ahora imprimimos los valores que acabamos de declarar en las líneas 14, 15 y 16 usando un bucle for anidado simple con la ayuda del iterador. */div>
clase='espacios indefinidos'> div>
class='undefinidos espacios'>>/* vector vect Podemos dividir esta declaración en dos partes, lo que nos ayudará a comprender los siguientes conceptos. 1. vect es un vector 2D que consta de varios elementos de tipo vector. 2. vector es un vector 1D que consta de múltiples datos int. Entonces podemos usar el iterador proporcionado por STL en lugar de la variable i,j utilizada en el bucle for. Puede reducir el error que puede ocurrir con las operaciones i, j (i++, j++). En el siguiente código, utilizamos el iterador para acceder a los elementos del vector. 1. Estamos obteniendo vectores vect1D de tipo vector del vector 2D vect. 2. Estamos obteniendo elementos int para x del vector vect 1D. */div>
clase='espacios indefinidos'> div>
clase='espacios indefinidos'>>para>(vectorintclass='plain'>> vect1D : vect) div>
clase='espacios indefinidos'>>{ div>
class='espacios indefinidos'>>for>(class='color1 negrita'>int>x: vect1D) div>
clase='espacios indefinidos'>>{ div>
class='espacios indefinidos'>>cout<< x <<>' 'class='plain'>; div>
clase='espacios indefinidos'>>} div>
class='espacios indefinidos'>>cout<< endl; div>
clase='espacios indefinidos'>>} div>
clase='espacios indefinidos'> div>
class='espacios indefinidos'>>return>0; div>
clase='plain'>} div>div>div>>

>

>

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 (metro)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

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 (metro)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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.