vector Inicializar 2D en C ++ de diferentes maneras

C ++ STL | Inicializar un vector 2D : En este artículo, vamos a ver cómo inicializar el vector 2D en C ++ de diferentes maneras con ejemplos?

Requisito: Inicializar vector 1D

Antes de discutir acerca de la inicialización técnicas nos permiten afirmar lo que es un vector 2D. Un vector 2D en sentido simple es una matriz que tiene filas y columnas. En otras palabras, un vector 2D es un vector de vector 1D, es decir, un vector que tiene elementos como 1D vector.

Entonces, ¿cuál será la notación de matriz 2D?

vector & lt; T & gt; arr , donde T es decir vector & lt; W & gt; donde, W puede ser cualquier tipo de datos como class, class etc.

lo tanto, un número entero 2D vector definiremos como vector & lt; vector & lt; class & gt; & gt; arr

Ahora vamos a llegar de nuevo al punto sobre la inicialización del vector 2D.

1) Inicialización de un vector de 2D vacío y luego empujando hacia atrás 1D arrays iterativamente

Este es el más na y iuml; enfoque ve a inicializar un vector 2D . En primer lugar, lo único que definimos un vector 2D vacía. En ese punto, no tiene idea acerca de cuántos elementos que va a tener. Entonces usando la función push_back () podemos simplemente seguir añadiendo 1D vectores en la parte posterior según el requisito. Ahora añadir 1D vector que necesitamos para inicializar matrices que 1D correctamente.

A continuación se muestra un ejemplo de añadir elementos de acuerdo con los deseos del usuario.

#include <bits/stdc++.h>
using namespace std;
int main()
{
//empty 2Dvector initialized
vector<vector<int> > two_D_vector;
//below is an empty 1D vector
vector<int> one_D_vector(5, 2);
//pushing back the above 1D vector to the
//empty 2D vector each time
for (int i = 0; i < 5; i++) {
two_D_vector.push_back(one_D_vector);
}
//printing the 2D vector
cout << "printing the 2D vectorn";
for (auto it : two_D_vector) {
//it is now an 1D vector
for (auto ij : it) {
cout << ij << " ";
}
cout << endl;
}
return 0;
}

salida:

printing the 2D vector
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2

2) Inicializar el vector con el tamaño definido por el usuario

Podemos inicializar el vector 2D con tamaño definido por el usuario también. Es bastante similar como la creación de una matriz dinámica 2D usando malloc () o nuevo operador. Así decimos que queremos inicializar un vector de 2D a filas n, y la columna m, entonces tenemos que inicializar un vector de tamaño n 2D con elementos de tamaño m 1D vectorial. Podemos hacer que al igual que a continuación, por todos los class valorado en la matriz 2D consigue inicializado a 0.

Como dijimos anteriormente un vector 2D es un vector de un vector 1D. Así class el uso class superior, pensemos exactamente de manera similar a partir del vector de 1D.

Así el vector exterior tiene tamaño n (número de filas)

vamos a definir que,

vector<T> arr(n);

Ahora T es en sí mismo un vector 1D y tiene tamaño m

Así, el elemento del vector exterior haría vector & lt ; int & gt; (m)

Esta combinación,

vector<vector<int>> arr(n, vector<int>(m))

#include <bits/stdc++.h>
using namespace std;
int main()
{
//n =no of rows
//m =no of columns
//both will be user defined
int n, m;
cout << "Enter number of rows, nn";
cin >> n;
cout << "Enter number of columns, mn";
cin >> m;
//2D vector initialized with user defined size
vector<vector<int> > two_D_vector(n, vector<int>(m));
//by default all values are 0
//printing the 2D vector
cout << "printing the 2D vectorn";
for (auto it : two_D_vector) {
//it is now an 1D vector
for (auto ij : it) {
cout << ij << " ";
}
cout << endl;
}
return 0;
}

salida:

Enter number of rows, n
6
Enter number of columns, m
3
printing the 2D vector
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

3) Inicializar con tamaño definido por el usuario y el elemento definido por el usuario

aquí en lugar de la inicialización con char 0 , inicializamos con un valor definido por el usuario. El método será similar al método de un vector 1D.

Así class el vector exterior,

vector<T> arr(T,W)

Cuando, W será el elemento definido por el usuario. Ahora aquí elemento es en sí un vector 1D.

Así, el ejemplo será como a continuación,

Código 1:

#include <bits/stdc++.h>
using namespace std;
int main()
{
//n=no of rows which is user defined
int n;
cout << "Enter number of rows, nn";
cin >> n;
//user defined 1D array
vector<int> one_D_vector{ 1, 2, 3 };
//2D vector initialized with user defined size,
//user defined element
vector<vector<int> > two_D_vector(n, one_D_vector);
//printing the 2D vector
cout << "printing the 2D vectorn";
for (auto it : two_D_vector) {
//it is now an 1D vector
for (auto ij : it) {
cout << ij << " ";
}
cout << endl;
}
return 0;
}

de salida:

Enter number of rows, n
5
printing the 2D vector
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

Código 2:

#include <bits/stdc++.h>
using namespace std;
int main()
{
//n=no of rows which is user defined
int n, m;
cout << "Enter number of rows, nn";
cin >> n;
//user defined 1D array
cout << "Define your 1D array which will be elementn";
vector<int> one_D_vector;
cout << "keep pushing numbers, press 0 to stopn";
cin >> m;
while (m) {
one_D_vector.push_back(m);
cin >> m;
}
//2 Dvector initialized with user defined size,
//user defined element
vector<vector<int> > two_D_vector(n, one_D_vector);
//printing the 2D vector
cout << "printing the 2D vectorn";
for (auto it : two_D_vector) {
//it is now an 1D vector
for (auto ij : it) {
cout << ij << " ";
}
cout << endl;
}
return 0;
}

de salida:

Define your 1D array which will be element
keep pushing numbers, press 0 to stop
3 4 5 0
printing the 2D vector
3 4 5
3 4 5
3 4 5
3 4 5
3 4 5

4) inicializar el vector 2D con elementos definidos por el usuario

también podemos inicializar el vector con elementos definidos por el usuario. La sintaxis sería:

vector<vector<int>> two_D_vector{comma separated 1D elements};

El ejemplo es el siguiente: elementos

Printing the vector...
1 2 3 4 5 -1 -2 6

5) Inicialización de un vector con elementos de otro vector

Nos puede también inicializar un vector usando:

#include <bits/stdc++.h>
using namespace std;
int main()
{
//initialize with user-defined elements
vector<int> arr{ 1, 2, 3, 4, 5, -1, -2, 6 };
cout << "Printing the vector...n";
for (auto i : arr)
cout << i << " ";
cout << endl;
return 0;
}

de salida de otro vector. El vector se pasa como un constructor para inicializar el nuevo vector. Esta es una copia profunda de hecho.

El ejemplo es como a continuación:

#include <bits/stdc++.h>
using namespace std;
int main()
{
//2D vector initialized with user
//defined -elements only
vector<vector<int> > two_D_vector{
{ 1, 2, 3 }, //comma separated lists
{ 5, 6, 7 },
{ 8, 9, 3 }
};
//printing the 2D vector
cout << "printing the 2D vectorn";
for (auto it : two_D_vector) {
//it is now an 1D vector
for (auto ij : it) {
cout << ij << " ";
}
cout << endl;
}
return 0;
}

de salida:

printing the 2D vector
1 2 3
5 6 7
8 9 3


Deja un comentario

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