这是为了保存数据
double **a;
a = new (double*)[100];
for (int i=0; i<100; ++i) {
a[i] = new double[99];
}
ptr_vector 可以包含一个指针 vector 。但是似乎不支持自定义删除器来释放数组。
一个解决方案是我可以创建一个管理 99 个 double 的新类,并使用 ptr_vector 来容纳 100 个类?
最佳答案
最好的方法是使用标准库。 std::vector
让您不必担心内存管理和设置 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
的意图,后者是为了避免使用指针和自动分配和释放内存。
关于c++ - boost 是否具有用于数组 vector 的智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190358/