Est-ce que Destructeur est suffisant ou dois-je itérer pour supprimer les nouveaux nœuds ??Comment nettoyer (destructeur) un tableau dynamique de pointeurs?
#include "stdafx.h"
#include<iostream>
using namespace std;
struct node{
int row;
int col;
int value;
node* next_in_row;
node* next_in_col;
};
class MultiLinkedListSparseArray {
private:
char *logfile;
node** rowPtr;
node** colPtr; // used in constructor
node* find_node(node* out);
node* ins_node(node* ins,int col);
node* in_node(node* ins,node* z);
node* get(node* in,int row,int col);
bool exist(node* so,int row,int col);
//add anything you need
public:
MultiLinkedListSparseArray(int rows, int cols);
~MultiLinkedListSparseArray();
void setCell(int row, int col, int value);
int getCell(int row, int col);
void display();
void log(char *s);
void dump();
};
MultiLinkedListSparseArray::MultiLinkedListSparseArray(int rows,int cols){
rowPtr=new node* [rows+1];
colPtr=new node* [cols+1];
for(int n=0;n<=rows;n++)
rowPtr[n]=NULL;
for(int i=0;i<=cols;i++)
colPtr[i]=NULL;
}
MultiLinkedListSparseArray::~MultiLinkedListSparseArray(){ // is that destructor enough??
cout<<"array is deleted"<<endl;
delete [] rowPtr;
delete [] colPtr;
}
Une bonne règle. Une classe ne doit jamais contenir plus d'un pointeur et ne doit contenir qu'un pointeur si c'est le travail de la classe de gérer la mémoire. Faites des recherches sur les pointeurs intelligents. Démarrer avec boost :: shared_ptr –