2010-11-28 8 views
2

Comment puis-je initialiser un vecteur bidimensionnel dans le contstructor d'une classe avec des valeurs nulles? Cela ne fonctionnera pas:Comment initialiser un vecteur dans le constructeur d'une classe

#include <vector> 
using namespace std; 

class matrix { 
public: 
    typedef int element_type; 
    matrix(int dim):data(dim, vector<int>(dim, 0)) { 
    } 
private: 
    vector<vector<element_type>> data; 
}; 

Dois-je écrire un destructeur pour libérer le vecteur?

Répondre

5

Mise à jour: Le code OP est désormais valide à partir de C++ 11.

réponse originale pour les versions antérieures de C++:


Vous devez écrire comme ceci:

vector< vector<element_type> > data; 

parce >> est par ailleurs analysé comme opérateur de flux, ce qui est invalide ici. Et: Non, vous n'avez pas besoin de libérer ceci dans le destructeur, parce que vous ne le créez pas sur le tas.

+2

C++ 0x devrait corriger cette gêne. – Steve314

2

Dois-je écrire un destructeur pour libérer le vecteur?

Non, car vous n'avez pas acquis de ressources dans le constructeur. C'est la beauté de RAII.

Questions connexes