C++ 声明一个带有大小函数的二维数组

标签 c++ arrays

我正在尝试使用 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/

相关文章:

c++ - 实现智能指针类时出错

c++ - std::abs 与 std::transform 不工作

java - 搜索名称矩阵的方法,仅打印第一行

c++ - 函数模板的实例化

c++ - 转换运算符的外部定义的编译器差异

javascript - 从复杂数组中检索对象

java - java中如何将数组作为参数?

C 如何访问属于另一个结构中的结构数组一部分的结构的结构成员?

php - 按照其他数组定义的顺序对数组进行排序

c++ - 使用 MySQL C API 和 C++ 获取 MySQL 数据库表中的行