c++ - 从 C++ 返回二维数组

标签 c++ arrays pointers stdarray

在函数内部,我制作了一个二维数组,它从文本文件中填充自身并需要返回到 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";
        }
    }
}

实例: http://ideone.com/K4ilfX

关于c++ - 从 C++ 返回二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454966/

相关文章:

java - int[]数组和BitSet的交集可以更快吗?

c++ - Qt 图表 - 如何在 x 和 y 轴上显示特定点值?

c++ - 如何在 OpenCV 中将 Float Mat 写入文件

c++ - 将指针传递给需要引用的函数?

对指针的更改不是永久性的

c - 结构体指针不能正常工作?

C中的循环函数指针问题

c++ - 纯基类c++的动态数组的问题

javascript - JS数组中非空元素的最后索引

arrays - 从评估创建一维数组