我经常需要在编译时创建一个宽度和高度(让它们分别为n和m)未知的2D数组,通常我写:
vector<int> arr(n * m);
而且我用:]手动访问元素
arr[j * m + i]
我最近被告知我可以改写:
int arr[n][m] // n and m still only known at runtime.
所以这是2个问题:
int (*)[n]
,但同样,n是动态的,并且在声明它的函数之外并不知道(main
)。我经常需要在编译时创建一个宽度和高度(让它们分别为n和m)未知的2D数组,通常我这样写:vector
您要查询的功能(仅在运行时才知道尺寸)是C ++的非标准扩展,而是C.99的标准扩展(在C.11中成为可选功能)。该功能称为variable-length array (VLA),链接是GCC的文档。
为什么没有std::vector
的std::vector
?
std::vector
的std::vector
(来自#include <vector>
)与二维数组具有相同的作用: