方法1 new运算符
使用new
运算符和指针来实现,因为C++标准库并没有直接提供动态三维数组。以下是一个简单的步骤说明:
// 假设你想要存储整数,并且第一维和第二维大小未知,但第三维为固定的大小(如3)
//1 定义元素类型和维度:
typedef int T;
int sizeDim1, sizeDim2, sizeDim3 = 3;
//2 使用new创建数组:
T** array; // 创建一个指向二维数组的指针
array = new T * [sizeDim1]; // 分配第一维的内存
for (int i = 0; i < sizeDim1; ++i) {
array[i] = new T[sizeDim2 * sizeDim3]; // 对于每行,分配第二维的内存
}
//3 访问和操作数组元素:
array[rowIndex][colIndex][sliceIndex] = value; // 存储值
value = array[rowIndex][colIndex][sliceIndex]; // 读取值
//4 使用完毕后,记得释放内存:
for (int i = 0; i < sizeDim1; ++i) {
delete[] array[i]; // 删除每一行的内存
}
delete[] array; // 删除整个二维数组的内存
方法2 容器vector
容器类(如std::vector
)提供了动态扩展容量的能力,它们会在需要时自动分配更多内存。
vector<vector<vector<int>>> dp(m + 1, vector<vector<int>>(n - m + 2, vector<int>(n + 1)));