如何在C++中传递和返回一个三维数组?

922 阅读1分钟

如何在C++中传递和返回一个三维数组?

在C++中,3维数组可以通过两种方式实现。

  • 使用数组(静态)
  • 使用向量(动态)

在一个函数中传递一个静态三维数组。 在传递数组时使用指针。将其转换为等效的指针类型。

char ch[2][2][2];
void display(char (*ch)[2][2]) {
. . .
}

传递静态三维数组作为参数的程序。

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

传递三维矢量(动态数组)。 当一个向量被传递到一个函数时,它可以通过值传递,即存储一个向量的副本,也可以通过引用传递,即传递向量的地址。

  • 通过值传递。

void function(vector <vector < char >>> ch) {
. . .
}

  • 通过引用传递(更好)。

void function(vector< vector < vector < char>>> &ch) {
. . .
}

将一个动态三维数组作为参数传递的程序。

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

返回一个三维数组。在C++中,一个静态数组不能从一个函数中返回。所以我们必须从一个函数中传递一个三维向量,以获得返回三维数组的功能。

vector <vector< vector >> fun() {
vector <vector< vector >> ch;
. .
return ch;
}