2016-04-20 13 views
0

Wie würde ich ordnungsgemäß einen Destruktor für meine Hash-Tabelle erstellen? Kann ich einfach die [] Liste löschen? Ich verwende lineares Sondieren, um mit meinen Kollisionen umzugehen ... nicht sicher, ob dies für die Erstellung meines Destruktors relevant ist.Destruktor für HashTable

class Graph 
{ 
... 
private: 

vertex_node **list 


Graph::Graph() 
{ 

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


Graph::~Graph 
{ 


} 
+0

Ja, können Sie 'löschen []' Liste. Das Problem ist jedoch, wenn Sie den Graphen kopieren - z. indem Sie versehentlich das Objekt im Stapel übergeben, anstatt eine Referenz zu übergeben. – Petesh

Antwort

2

ersten Einzelelementen, dann löschen Sie [], um den Behälter

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

    delete[] list; 
} 

obligatorisch löschen: betrachten std :: vector und/oder std :: shared_ptr, wenn Sie 11 ++ c verwenden können, es wäre viel viel besser

+0

'std :: unique_ptr' wäre hier besser geeignet. – Quentin