2016-04-20 72 views
0

我該如何正確創建我的散列表的析構函數?我可以刪除[]列表嗎?我使用線性探測來處理我的碰撞...不知道這是否與創建我的析構函數有關。HashTable的析構函數

class Graph 
{ 
... 
private: 

vertex_node **list 


Graph::Graph() 
{ 

size = 0; 
capacity = INITIAL_CAP; 
list = new vertex_node *[capacity]; 
} 


Graph::~Graph 
{ 


} 
+0

是的,你可以'刪除[]列表。但問題是,如果您複製圖表 - 例如意外傳遞堆棧中的對象,而不是傳遞引用。 – Petesh

回答

2

第一刪除單個元件,然後刪除[]容器

Graph::~Graph 
{ 
    for (int i=0; i<capacity; i++) 
     if (list[i]) 
     delete list[i]; 

    delete[] list; 
} 

強制性:考慮使用std ::矢量和/或std :: shared_ptr的,如果你可以使用C++ 11,它會好很多

+0

'std :: unique_ptr'會更適合這裏。 – Quentin