【问题标题】:Passing a 2D array into a function by reference [duplicate]通过引用将二维数组传递给函数[重复]
【发布时间】:2018-09-11 04:57:55
【问题描述】:

我知道关于这个特定主题有多个答案,但我还没有找到适合我用例的答案。

我有一个二维数组 (9x9),我需要通过引用将其传递给函数,以便在函数完成后将其存储在主程序中。

这里是函数声明:

void ReadFile(ifstream& infile, string fileName, string filePath, int array[9][9]) // Opens, reads, outputs and closes the file

我打开的文件是一个 9x9 的数字网格,我需要将该网格存储到 main 中的一个局部变量(9x9 整数数组)中。

有人知道我该怎么做吗?

詹姆斯

【问题讨论】:

  • 这是 C++,请改用std::array
  • 答案是“是”。
  • 是什么让您无法通过参考?函数声明将是void ReadFile(ifstream& infile, string fileName, string filePath, int (&array)[9][9]);(注意&array 之前;括号是必要的,以避免——不可能和不需要的——引用数组)。

标签: c++ visual-studio-2017


【解决方案1】:

如果您可以访问 C++11 功能,我会放弃 C 样式数组以支持 C++ std::array

#include <array>

using Array = std::array<std::array<int, 9> 9>;

void ReadFile(ifstream& infile, string fileName, string filePath, const Array& array);

然后在你的函数中,你可以像任何其他变量一样copy这个数组。您还可以获得各种好东西,例如 size() 方法和迭代器访问。来自 cppreference(见上面的链接):

结构结合了 C 风格的性能和可访问性 具有标准容器的优点的数组,例如知道它的 自己的大小、支持赋值、随机访问迭代器等

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多