这是为了保存像
这样的数据double **a;
a = new (double*)[100];
for (int i=0; i<100; ++i) {
a[i] = new double[99];
}
ptr_vector可以包含指针向量。但它似乎不支持自定义删除器来释放数组。
一个解决方案是我可以创建一个管理99个双打的新类,并使用ptr_vector来保存100个类吗?
答案 0 :(得分:2)
最好的方法是使用标准库。 std::vector
使您不必担心内存管理并且必须设置矢量的大小。
std::vector<std::vector<double>> a;
您也可以使用std::unique_ptr
,但分配动态内存更麻烦。但是,由于std :: unique_ptr是智能指针,当对象析出/耗尽作用域时,内存会自动释放。
std::unique_ptr<std::unique_ptr<double>[]> a(new std::unique_ptr<double>[100]);
for (i=0; i <100; i++)
a[i] = std::unique_ptr<int[]>(new int[99]);
以上是有效的,但它违背了std::unique_ptr
的意图,即保护您不使用指针并自动分配和释放内存。