【发布时间】:2018-11-22 20:38:04
【问题描述】:
我应该如何将静态二维数组作为参数传递给 cpp 中的函数?我尝试了类似的方法:
void foo(int (&tab)[N][N]) {
// function body
}
int main() {
int n;
cin >> n;
int tab[n][n];
foo(tab); // doesn't work
return 0;
}
我在尝试调用 foo 时收到“无匹配函数错误”。
我需要静态数组,因为向量对于我的需要来说太慢了。我也想避免声明具有 10000 行和列的数组。此外,我想使用函数,因为它会使我的代码可读。这个问题有什么解决方案可以满足我的期望吗?
【问题讨论】:
-
这甚至不适用于“一维数组”。 C++ 不支持变长数组。
-
为什么不用双指针
int **tab? -
因为向量对我的需要来说太慢了。 – 太慢了,不适合什么?
-
@ventaquil "双指针" - 你为什么要这样做?保持代码简单 - 更多的星通常表示更差的代码,而不是更好的代码。现代 C++ 有容器、智能指针等,您可以使用它们来避免使用低级的东西并保持正常(并且抽象通常会优化掉)。
-
@Mentos1105 呵呵!使用大小为
rows * columns的one 向量并计算像(row * columns + col)这样的索引。如果您知道接下来 n 次访问将保持在同一行,请缓存索引并进行添加。要查找的术语:缓存位置。
标签: c++