c++ - 如何声明通过引用传递多维数组的函数

标签 c++ arrays multidimensional-array

我有一个网格,我想将其传递给另一个显示它的函数。但是,我似乎无法弄清楚如何声明该函数,多维数组通过引用传递给该函数。

void foo(bool[][]&); //INCORRECT: how is a correct way to declare this function?

// rest of code :

int main(){
    bool grid[50][50] = {false};
    foo(grid);
    return 0;
}

void foo(bool& grid[][]){
    // do things
}

这应该是一个初级问题,但我在寻找解决方案时遇到了很多麻烦。

最佳答案

对二维数组类型的引用如下所示:

T (&)[N][M]

所以你想要:

void foo(bool(&)[50][50]);

请注意,必须指定尺寸。对于函数定义,它看起来像:

void foo(bool (&grid)[50][50]) {

如果您需要能够将该函数用于各种大小的二维数组,您可以将其作为维度上的模板:

template <std::size_t N, std::size_t M>
void foo(bool(&)[N][M]);

模板将为您传递给它的每种大小的数组实例化。

关于c++ - 如何声明通过引用传递多维数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21145749/

相关文章:

c++ - Tic Tac Toe C++算法调试帮助

c++ - 分配二维字符数组

c - 如何在C中实现二维结构数组

php - 多维数组中的 array_unshift 在所有数组的第一个元素处插入

c++ - 指针的直接初始化

c++ - 简单的模板实现

Java 游戏错误(数组、this.、方法)

java - 通过使用循环访问每个索引将字符串数组转换为整数数组

javascript - typescript -在多维对象中查找匹配的键和路径

c++ - g++ 和 clang++ 不同的行为与指向可变参数模板函数的指针