C++ 声明具有大小函数的 2D 数组

C++ Declaring a 2d array with a size function

本文关键字:函数 2D 数组 声明 C++      更新时间:2023-10-16

我正在尝试使用 stl map 的 size(( 方法声明一个 2d 数组:

const int size = edge_map.size();//get row and column size
int a[size][size];//nxn matrix

不断收到编译器错误,即大小必须是常量值,即使我将其声明为常量。在不必使用动态 2D 数组的情况下,是否有任何解决方法?

数组的静态内存分配可以接受变量,只要变量的值可以在编译时确定。此要求的原因是编译器必须知道要为堆栈上的数组分配多少内存。如果edge_map听起来像(某种容器可以在整个存在过程中改变大小(,您将无法以这种方式做到这一点。

但是,如果不是这种情况,并且edge_map.size()有一个可以在编译时确定的返回值,则将该函数标记为constexpr应该允许此代码工作。

const表示不更改其原始(初始(值。

但是size必须在编译时知道,因为编译器/链接器为非局部变量(声明为任何函数(分配内存。