如何在C++中动态给出 2D 数组的名称

How to give names of 2D arrays dynamically in C++?

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

我想创建几个相同大小的二维数组,例如表1[80][3],表2[80][3],表3[80][3],...,表N[80][3]。但是要创建的数组的数量(N)将由用户提供。那么,如何动态创建这些数组呢?提前谢谢..:)

在 c++ 中不能有变量或函数的动态符号名称。这些仅在编译代码期间很重要,并且无法在程序运行时生成它们。

正如我的评论中提到的,您可以得到的最接近的东西是使用某些std::string值映射这些表,例如

std::map<std::string,std::array<std::array<int,3>,80>> tables;

并像这样操纵值

tables["table1"][20][1] = 0;
tables["table2"][10][0] = 42;
// etc. ...

听起来像一个 3D 数组:

typedef int T[80][3]; // T is your 2d array type
T* tables = new T[N]; // an array of N T's.

或者数组和向量的有趣混合:

std::vector<T> tables(N); // the same, but safer

当然,这些没有命名...但table1真的比tables[0]好吗?您的里程可能会有所不同。