Vectores multidimensionales en C++

Naila Saad Siddiqui 15 febrero 2024
Vectores multidimensionales en C++

Este breve tutorial de programación trata sobre la introducción a los vectores multidimensionales en C++. Los vectores son contenedores que pueden almacenar datos como matrices dinámicas en C++ con una función de cambio de tamaño automático.

Vectores multidimensionales en C++

Se puede crear una estructura de datos abstracta denominada vector multidimensional de C++ utilizando varios componentes de construcción de C++, pero este tutorial se centrará principalmente en la implementación del contenedor std::vector de la biblioteca de plantillas estándar. Usaremos algunos métodos en la clase std::vector para simplificar las operaciones en vectores multidimensionales.

Declarar e inicializar vectores 2D en C++

Al colocar un especificador de vector dentro del parámetro de plantilla de otro vector, puede especificar un vector bidimensional.

Recuerde que solo se establece el vector interno para el tipo de datos del elemento. Es posible expresar matrices y realizar operaciones asociadas utilizando vectores bidimensionales.

El siguiente ejemplo de código muestra la definición y la inicialización de la lista de vectores bidimensionales.

Decidimos definir un vector bidimensional con miembros enteros al azar. El siguiente código de ejemplo tiene tres vectores con las etiquetas mat1, mat2 y mat3.

No todo el mundo tiene el mismo número de elementos en cada fila, como puedes ver. Finalmente, imprimimos los datos en estos vectores usando una función auxiliar llamada PrintMatrix.

#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;

void PrintMatrix(vector<vector<int>> vec) {
  for (auto &item : vec) {
    for (auto &elem : item) cout << elem << "  ";
    cout << endl;
  }
  cout << endl;
}
int main() {
  vector<vector<int>> mat1 = {{0, 1, 2}, {3, 4, 5}, {6, 7}};
  vector<vector<int>> mat2 = {{10, 9}, {8, 7, 6, 5}, {4, 3, 2}};
  vector<vector<int>> mat3 = {{11, 12}, {13}, {14, 15, 16, 17, 18, 19}};
  PrintMatrix(mat1);
  PrintMatrix(mat2);
  PrintMatrix(mat3);
  return 0;
}

Puede ver en el fragmento de código anterior que los tres vectores tienen diferentes tamaños para cada fila. Estos tamaños se ajustan automáticamente según los datos inicializados en ellos.

El código dará el siguiente resultado:

Salida vectorial 2D de C++

Declarar e inicializar vectores 3D en C++

Al igual que un vector 2D, el vector 3D es un vector del vector de un vector. Es como una matriz tridimensional.

La sintaxis seguirá el mismo patrón que en un vector 2D, como se muestra en el siguiente ejemplo:

vector<vector<vector<int>>> threeDVector = {{{11, 12}, {12, 13}, {13, 14, 15}},
                                            {{11, 12}, {12, 13}, {13, 14}},
                                            {{11, 12}, {12, 13}, {13, 14}}};

for (int a = 0; a < threeDVector.size(); a++) {
  for (int b = 0; b < threeDVector[a].size(); b++) {
    for (int c = 0; c < threeDVector[a][b].size(); c++) {
      cout << threeDVector[a][b][c] << " ";
    }
    cout << endl;
  }
  cout << endl;
}

Esto dará el siguiente resultado:

Salida vectorial 3D de C++

Por lo tanto, podemos decir que los vectores actúan como arreglos pero son más eficientes para operar y usar en términos de memoria y tiempo.

Artículo relacionado - C++ Vector