¿Cómo pasar y devolver una array tridimensional en C++?

En C++, una array tridimensional se puede implementar de dos maneras:

  • Usando array (estática)
  • Usando vector (dinámico)

Pasar una array 3D estática en una función: usar punteros al pasar la array. Convirtiéndolo al tipo de puntero equivalente.

char cap[2][2][2];
visualización vacía (char (*ch)[2][2]) {
    . . .
}

Programa para pasar una array 3D estática como parámetro:

C++

// C++ code to demonstrate the above method
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to show how to pass
// a 3D character array to a function
void display(char (*ch)[2][2])
{
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 2; k++) {
                cout << "ch[" << i << "][" << j << "]["
                     << k << "] = " << ch[i][j][k] << endl;
            }
        }
    }
}
 
// Driver code
int main()
{
    char ch[2][2][2] = { { { 'a', 'b' }, { 'c', 'd' } },
                         { { 'e', 'f' }, { 'g', 'h' } } };
 
    // Function call with 3D array as parameter
    display(ch);
    return 0;
}
Producción

ch[0][0][0] = a
ch[0][0][1] = b
ch[0][1][0] = c
ch[0][1][1] = d
ch[1][0][0] = e
ch[1][0][1] = f
ch[1][1][0] = g
ch[1][1][1] = h

Complejidad temporal:   O(n 3 )

Espacio Auxiliar: O(1)

Pasar vector 3D (array dinámica): cuando se pasa un vector a una función, se puede pasar por valor, donde se almacena una copia del vector, o por referencia, donde se pasa la dirección del vector.

  • Pasar por valor: 

función vacía (vector <vector <vector < char >>> ch) {
    . . .
}

  • Pasar por referencia (Mejor):

función vacía (vector< vector < vector < char>>> &ch) {
    . . .
}

Programa para pasar una array 3D dinámica como parámetro:

C++

// C++ code to demonstrate the initialization
// and passing as a parameter (passed as reference)
 
#include <bits/stdc++.h>
using namespace std;
 
// Parameter passed as reference
void display(vector<vector<vector<char> > >& ch)
{
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 2; k++) {
                cout << "ch[" << i << "][" << j << "]["
                     << k << "] = " << ch[i][j][k] << endl;
            }
        }
    }
}
 
int main()
{
    vector<vector<vector<char> > > ch
        = { { { 'a', 'b' }, { 'c', 'd' } },
            { { 'e', 'f' }, { 'g', 'h' } } };
 
    // Function to call function by passing as parameter
    display(ch);
    return 0;
}
Producción

ch[0][0][0] = a
ch[0][0][1] = b
ch[0][1][0] = c
ch[0][1][1] = d
ch[1][0][0] = e
ch[1][0][1] = f
ch[1][1][0] = g
ch[1][1][1] = h

Complejidad temporal:  O(n 3 )

Espacio Auxiliar: O(1)

Devolver una array 3D: una función en C++ no puede devolver una array estática. Entonces, tenemos que pasar un vector 3D desde una función para obtener la funcionalidad de devolver una array 3D.

vector <vector< vector <char>>> fun() {
    vector <vector< vector <char>>> ch;
    . . .
    volver ch;
}

Publicación traducida automáticamente

Artículo escrito por longcodex y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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