在函数内部,我制作了一个二维数组,它从文本文件中填充自身并需要返回到 main。该数组在整个程序中保持恒定大小。
我知道这是一个经常被问到的问题,但我似乎总是得到以下两个答案之一:
使用 std::vector 或 std::array 或其他一些 STD 函数。我真的不明白这些是如何工作的,是否有任何网站实际解释它们以及与普通阵列相比它们的行为方式?我需要什么特殊的#include 吗?
或者
使用指向数组的指针,并返回指针。首先,在一些答案中,由于本地数组,它显然不起作用。我怎么知道它什么时候起作用,什么时候不起作用?我如何在主函数中使用这个数组?
与实际代码相比,我在指针和 std::things 的概念上遇到了更多麻烦,因此,如果您知道某个网站解释得特别好,请随意提出。
最佳答案
不一定是最好的解决方案,但却是使其与 vector 一起工作的最简单方法。优点是您不需要删除内存(自动发生),并且在大多数编译器的 Debug模式下都会对数组进行边界检查。
#include <vector>
#include <iostream>
using array2D = std::vector< std::vector< int > >;
array2D MyFunc(int x_size, int y_size)
{
array2D array(y_size, vector< int >(x_size));
int i = 0;
for (int y = 0; y < array.size(); y++)
{
for (int x = 0; x < array[y].size(); x++)
{
// note the order of the index
array[y][x] = i++;
}
}
return array;
}
int main()
{
array2D bob = MyFunc(10, 5);
for (int y = 0; y < bob.size(); y++)
{
for (int x = 0; x < bob[y].size(); x++)
{
cout << bob[y][x] << "\n";
}
}
}
关于c++ - 从 C++ 返回二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454966/