返回多维数组

Returning multidimensional array c++

本文关键字:数组 返回      更新时间:2023-10-16

我想创建一个返回c风格多维数组的函数
int mArray[2][2]; int[][] mArray getArray();

所以这不起作用,我不知道为什么。

From [dcl.funct]:

函数的返回类型不能是数组类型或函数类型,尽管它们的返回类型可以是指针类型或指向这类对象的引用类型。不能有函数数组,但可以有指向函数的指针数组。

但是,您可以返回一个std::array:

std::array<std::array<int, 2>, 2> getArray();

不能按值返回数组,因为它们不会隐式复制(也因为标准是这样规定的)。你应该用std::array代替:

std::array<std::array<int,2>,2> fun();
std::array<std::array<int,2>,2> arr = fun();

现在在std::array上使用c数组的原因不多,最常见的原因可能是"因为我的老师/教授/老板这么说"。