在C++中,如何将二维数组作为参数传递给函数,该函数返回二维数组?
如果我有一个数组定义如下:
struct Hello
{
int a;
int b;
};
Hello hello[3][3] = {.......};如何在函数中返回上面的数组?
发布于 2012-12-06 05:58:28
Hello(&f(Hello(&In)[3][3])) [3][3] {
//operations
return In;
} 发布于 2012-12-05 21:34:52
答案取决于您所说的二维数组是什么。
C++的方法是拥有一个std::vector<std::vector<Type> >,在这种情况下,答案是这样的
typedef std::vector<std::vector<myType> > Array2D;
Array2D f(const Array2D& myArray)
{
}如果您已经在Type**中动态分配了数组,如下所示
Type** p = new Type*(n);
for(int i = 0; i < n; ++i)
{
p[i] = new Type(m);
}然后,您可以简单地将Type**与维度一起传递。
... f(Type** matrix, int n, int m);如果你有一个普通的2D数组,如
Type matrix[N][M];然后,您可以将其作为
template<int N, int M>
... f(Type (&matrix)[N][M]);我故意将前面两个示例中的返回类型留空,因为它取决于返回的内容(传递的数组或新创建的数组)和所有权策略。
发布于 2012-12-05 22:30:34
很难读懂(推荐使用typedef),但你可以这样做:
Hello(&f(Hello(&A)[3][3])) [3][3] {
// do something with A
return A;
} 如果这是相同的数组,则实际上不需要返回。取而代之的是返回void -语法会简单得多。
https://stackoverflow.com/questions/13724432
复制相似问题