当使用new[]分配多维数组时,必须分别分配每个维度,例如:
std::string** Plane = new std::string*[15];
for(int i = 0; i < 15; ++i)
Plane[i] = new std::string[60];
...
for(int i = 0; i < 15; ++i)
delete[] Plane[i];
delete[] Plane;
要访问给定行/列对的字符串,您可以使用Planes[row][column] 语法。
否则,将其展平为一维数组:
std::string* Plane = new std::string[15*60];
...
delete[] Plane;
要访问给定行/列对的字符串,您可以使用Planes[(row*60)+column] 语法。
话虽如此,您应该远离使用这样的原始指针。请改用std::vector 或std::array:
typedef std::vector<std::string> string_vec;
// or, in C++11 and later:
// using string_vec = std::vector<std::string>;
std::vector<string_vec> Planes(15, string_vec(60));
// C++11 and later only...
std::vector<std::array<std::string, 60>> Planes(15);
// C++11 and later only...
using Plane_60 = std::array<std::string, 60>;
std::unique_ptr<Plane_60[]> Planes(new Plane_60[15]);
// C++14 and later only..
using Plane_60 = std::array<std::string, 60>;
std::unique_ptr<Plane_60[]> Planes = std::make_unique<Plane_60[]>(15);
其中任何一个都可以让您使用Planes[row][column] 语法访问字符串,同时为您管理数组内存。