2017-04-03 58 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的目的是爲您節省使用指針,並自動分配和釋放內存。