我在将动态指针排列为2维及以上时一直遇到问题,例如我想要一个指向2D数组的指针。我知道:
int A[3][4];
int (*P)[4] = A;
完全合法(即使我不完全理解为什么)。考虑到以下因素:
int *P = new int[4];
工作时,我想象过:
int **P = new int[5][7];
也可以工作,但事实并非如此。这段代码显示了错误:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
看到这个,新的部分就成为我创建的一个包含7个整数数组的指针:
int (*P)[4] = new int[7][4];
这确实可以工作,但不是我想要实现的。这样做,我至少需要使用常量值来限制任何后续维度,但我希望它在运行时完全定义,因此是“动态”的。
我该如何让这个多维指针工作呢?
std::vector<std::unique_ptr<int>>
- Chad