我正在尝试使用 STL 映射的 size() 方法声明一个二维数组:
const int size = edge_map.size();//get row and column size
int a[size][size];//nxn matrix
尽管我将其声明为常量,但我不断收到编译器错误,提示大小必须为常量。有没有解决这个问题而不必使用动态二维数组的方法?
最佳答案
数组的静态内存分配可以接受变量,只要变量的值可以在编译时确定。之所以有这个要求,是因为编译器必须知道要为堆栈上的数组分配多少内存。如果 edge_map
是它听起来的样子(某种可以在其存在期间改变大小的容器),那么您将无法以这种方式做到这一点。
如果不是这种情况,edge_map.size()
有一个可以在编译时确定的返回值,将该函数标记为 constexpr
应该允许此代码工作。
关于C++ 声明一个带有大小函数的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121734/