¿Cómo uso vectores para una matriz 2D en C ++?

Hola. En primer lugar, le diría que su pregunta es muy lógica y viene a la mente de cada individuo después de tomar una conferencia o dos en STL.

Ahora, si piensa por un tiempo, puede encontrar una solución mucho mejor que una matriz 2D estándar. Te diré por qué.

std :: vector <std :: vector > var;

Ahora observe que es un vector de tipo vector que es el de tipo int. ¿Tiene sentido? Un vector de vectores.

¿Por qué es mejor? Este es el por qué. Si desea almacenar una matriz triangular inferior usando una matriz 2D estándar, sería algo así como:

1 0 0 0

1 2 0 0

1 2 3 0

1 2 3 4

Aquí desperdicia espacio para ceros (24 bytes en c ++)

Pero con los vectores no necesita almacenar ceros en absoluto. Piénsalo. Básicamente ese es el propósito de usar STL.

1

1 2

1 2 3

1 2 3 4

Puede crear una matriz 2D haciendo

int a [5] [7]

pero

vector a (5,7)

no creará un vector 2D; creará un vector de 5 elementos lleno de 7s. En cambio, debe crear un vector de vectores. Aquí hay algunas formas de hacerlo.

#include
#include
usando el espacio de nombres estándar;

int main ()
{
// Un vector vacío de vectores. El espacio
// entre los 2 ‘>’ signos es necesario
vector > v2d;

// Si tienes la intención de crear muchos vectores
// de vectores, el siguiente es más ordenado
typedef vector > IntMatrix;
IntMatrix m;

// Ahora intentaremos crear una “matriz” de 3 por 5.
// Primero, crea un vector con 5 elementos
vector v2 (5, 99);

// Ahora crea un vector de 3 elementos.
// Cada elemento es una copia de v2
vector > v2d2 (3, v2);

// Imprime los elementos
para (int i = 0; i para (int j = 0; j cout << v2d2 [i] [j] << "";
cout << endl;
}