我正在尝试使用STL map的size()方法声明一个二维数组:
const int size = edge_map.size();//get row and column size
int a[size][size];//nxn matrix
我一直遇到编译器错误,即使我声明它为常量,大小也必须是一个常量值。是否有任何解决方法,而不必使用动态2D数组?
new
关键字进行定义。 - NiVeRstd::vector
,并将二维索引转换为一维索引;对于任何T[rN][cN]
,你可以创建一个有rN * cN
个元素的vector<T> a(rN * cN)
,用(r * rN) + c
作为索引来访问元素[r][c]
(例如,对于一个int[5][5]
,vector<int> a(25)
,对于元素[3][1]
,索引为16
((3 * 5) + 1
))。这只是动态一维数组的抽象,好处是你不需要自己进行内存管理。由于仍然是动态的,因此不能将其作为答案发布。 - Justin Time - Reinstate Monica