如何 return 二维数组 C++
How to return 2d array C++
我有一个函数需要 return 一个二维数组,我是 c++ 的新手,但我搜索了很多,我得到的最好的是,它给出了“错误:无法转换 'int** (*)[3]' 到 'int**' 在 return".
int** initial_state()
{
int arr[3][3] =
{
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}}
;
return arr;
}
更好的选择是使用 std::vector
并简单地 returning vector<vector<int>>
。为了使用 vector
,您需要包含库 vector
。 (#include<vector>
)
代码如下:
vector<vector<int>> initial_state()
{
vector<vector<int>> arr
{
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}
};
return arr;
}
如果必须使用return二维数组,则需要将数组声明为动态数组。
int** initial_state()
{
//Create an array of pointers with size 3.
int** arr = new int* [3];
//Each pointer points to an array with size 3.
for (int i = 0; i < 3; i++)
{
arr[i] = new int[3];
}
//Fill the 2d array with values.
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
arr[i][j] = 0;
}
}
return arr;
}
您可以使用 auto
关键字执行类似的操作,如本例所示:
auto make_array() {
int arr[3][3];
return arr;
}
它实际上是一个指向 int
的指针数组,但它确实有效。
我有一个函数需要 return 一个二维数组,我是 c++ 的新手,但我搜索了很多,我得到的最好的是,它给出了“错误:无法转换 'int** (*)[3]' 到 'int**' 在 return".
int** initial_state()
{
int arr[3][3] =
{
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}}
;
return arr;
}
更好的选择是使用 std::vector
并简单地 returning vector<vector<int>>
。为了使用 vector
,您需要包含库 vector
。 (#include<vector>
)
代码如下:
vector<vector<int>> initial_state()
{
vector<vector<int>> arr
{
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}
};
return arr;
}
如果必须使用return二维数组,则需要将数组声明为动态数组。
int** initial_state()
{
//Create an array of pointers with size 3.
int** arr = new int* [3];
//Each pointer points to an array with size 3.
for (int i = 0; i < 3; i++)
{
arr[i] = new int[3];
}
//Fill the 2d array with values.
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
arr[i][j] = 0;
}
}
return arr;
}
您可以使用 auto
关键字执行类似的操作,如本例所示:
auto make_array() {
int arr[3][3];
return arr;
}
它实际上是一个指向 int
的指针数组,但它确实有效。