Bonjour,
Voilà, j'ai un petit [/gros] problème avec un std::vector. Bon un peu de code serait mieux que de long discours :
Pour les objets utilisés dans le vecteur :
Déclaration du-dit vecteur (dans une classe):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 template <typename TYPE, int n> struct VECT { TYPE data[n]; static const int size = n; VECT<TYPE, n>(void) { return ;} VECT<TYPE, n>(const VECT<TYPE, n>& v) { for(int i = 0; i<n; i++) data[i] = v.data[i]; } ~VECT<TYPE, n>(void) { //Signal de destruction } inline TYPE& operator[] (int i) { return data[i]; } inline VECT<TYPE, n>& operator= (const VECT& v) { for(int i = 0; i<n; i++) data[i] = v.data[i]; return (*this); } };
On ajoute un élément : (dans une boucle for)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector< VECT<unsigned char, 3> > visibles;
à l'ajout : le vecteur augmente bien le nombre d'élément contenus mais appelle le destructeur pour chaque élément contenu (donc plusieurs destructions par objet insérés pendant les tours de boucle...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 VECT< unsigned char, 3> v; v[0] = 1; v[1] = 1; v[2] = 1; visibles->push_back( v );
Bref que du bonheur... et des fuites mémoires...
A noter que sans aucune opérations, si le vecteur est simplement déclaré, il y a aussi des erreurs. J'ai essayé d'utiliser un pointeur vers vecteur alloué avec new, cela supprime ce dernier bug mais les éléments continuent à être détruits...
Merci de vos conseils...
Partager