C++ 如何将2D数组作为参数发送给递归函数?
我有一个简单的测试函数,它为2D数组获取行和列索引,并检查该位置的2D值是否为2。如果没有,它将检查下一行索引,直到它检查了该行上的每个元素的值2:C++ 如何将2D数组作为参数发送给递归函数?,c++,arrays,c++11,recursion,C++,Arrays,C++11,Recursion,我有一个简单的测试函数,它为2D数组获取行和列索引,并检查该位置的2D值是否为2。如果没有,它将检查下一行索引,直到它检查了该行上的每个元素的值2: 1 bool rowContainsTwo(const int rowIndex、const int columnIndex、const int size、const int grid[size][size]){ 2如果(网格[rowIndex][columnIndex]==2) 3返回真值; 4其他 5返回(rowIndex+1
1 bool rowContainsTwo(const int rowIndex、const int columnIndex、const int size、const int grid[size][size]){
2如果(网格[rowIndex][columnIndex]==2)
3返回真值;
4其他
5返回(rowIndex+1
编译此测试函数时,会出现以下编译错误:
$g++-std=c++11 test.cpp-o test
test.cpp:5:84:错误:无法使用“const int(*)[size]”类型的左值初始化“const int(*)[*]”类型的参数
返回(行索引+1<大小)?rowContainsTwo(rowIndex+1,columnIndex,大小,网格):false;
^~~~
test.cpp:1:90:注意:在此处将参数传递给参数“grid”
bool rowContainsTwo(常量int rowIndex、常量int columnIndex、常量int size、常量int grid[size][size]){
^
生成1个错误。
我已经看过各种关于将2D数组作为函数参数传递的文章,但是我还没有看到任何关于我遇到的这个错误以及如何递归地将数组传递给函数的信息
我希望得到一个简单的答案,即如何将静态数组作为参数递归传递,而不必将其设置为动态数组
注意,我不需要修改数组元素,我只需要查看元素
还请注意,我知道使用向量会更好,我可以用于循环和各种迭代方法-设置约束,我希望使用静态2D数组执行此操作,并且我希望将数组作为参数递归传递
谢谢阅读!
C++和C++是不同的。那么,它是哪一个?看起来C++相关,为什么是C标签?它只是建议的,我认为C++是C的扩展,在这里有一些向后兼容性(即C++中可以编写C代码等)。但是,是的,我的一个限制是我必须用C++11编译,而C++和C++有很多共同点,有一些重要的东西不同(你在看一个)。所以不要把C++看作是扩展C——请注意,可变长度数组不是C++标准的一部分,在C++中,数组的大小必须在编译时知道。换句话说,你不能声明代码> int ARR [大小] [大小]作为一个参数,其中size
也作为一个参数传递。在这个主题上有很多重复:谢谢@Bob\uuuuu,这是我的问题!我认为size
是一个固定/常量值,但不能保证后续调用将具有相同的size
,这对stat来说确实是一个巨大的问题集成电路阵列!