2017-04-03 36 views
1

这是为了保持像增强是否有数组向量的智能指针?

double **a; 
a = new (double*)[100]; 
for (int i=0; i<100; ++i) { 
    a[i] = new double[99]; 
} 

的ptr_vector数据可包括指针的向量。但它似乎不支持自定义删除以释放数组。

一个解决方案是我可以创建一个管理99个双打的新类,并使用ptr_vector来容纳100个类?

回答

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的目的是为您节省使用指针,并自动分配和释放内存。