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; }
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; }
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;
}