[英]C++ Declaring a 2d array with a size function
我试图通过使用STL map的size()方法声明一个二维数组:
const int size = edge_map.size();//get row and column size
int a[size][size];//nxn matrix
我不断得到一个编译器错误,即大小必须是一个常量值,即使我将它声明为常量。 没有必要使用动态二维数组,有没有解决这个问题?
只要可以在编译时确定变量的值,数组的静态内存分配就可以接受变量。 这个要求的原因是因为编译器必须知道为堆栈上的数组分配多少内存。 如果edge_map
听起来像(某种容器可以在整个存在期间改变大小),那么你就不可能这样做了。
但是,如果不是这种情况,并且edge_map.size()
具有可在编译时确定的返回值,则将该函数标记为constexpr
应该允许此代码工作。
const
表示不更改其原始(初始)值。
但是编译时必须知道size
,因为编译器/链接器为非局部变量分配内存(从任何函数声明)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.