【发布时间】:2019-01-04 19:09:17
【问题描述】:
我知道我可以像这样声明一个具有一个动态维度的数组:
double(*LHS)[3][3][3] = new double[M + 2][3][3][3];
但我需要声明一个具有“两个”动态维度的数组。我检查了如下语法:
double (**U)[3] = new double*[M + 2][3];
for (int i = 0; i < M + 2; ++i) U[i][3] = new double[N + 2][3];
但它不起作用!
请帮我正确定义一个动态维度的三维数组。
【问题讨论】:
-
使用简单的
std::vector怎么样? -
数组是 XXX 的一大难题。考虑使用
std::vector<std::vector<std::array<double, KNOWN_SIZE>>> -
使用
std::array和std::vector。 -
看起来
std::vector<std::array<double, 27>>就足够了,然后您将最后 3 个坐标映射到从 0 到 26 的索引(例如x + 3*y + 9*z)。 -
@πάνταῥεῖ 你能从已删除的问题中复制你的答案吗?
标签: c++ arrays dynamic-memory-allocation