Bonjour,

Je demande si la STL avec ses avantages supposées ne fabrique pas une machine à gérer des objets, mais moins des pointeurs sur ces objets.

Par exemple pour gérer un "vector" de type pointeur sur T ( T*) il faut faire du code supplémentaire et ennuyeux et parfois sans succès.

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
35
36
37
38
39
40
41
42
43
44
45
46
 
#include  <iostream>
#include  <vector>
using namespace std ;
void do1()
{
   vector < double * > v ;
 
   for ( size_t i = 0 ; i < 16 ; i++ )
   { 
     double * z = new double( 1 + (i) * 10) ;
     v.push_back( z  )  ;
   }
   cout << v  ;
 
   // pour supprimer 
   delete v[2] ;  // ajouté sinon caca
   v.erase( v.begin() + 2 ) ;
 
   double * x1 = new double(-100.005) ;
   v.insert( v.begin() + 6, x1 ) ;  // ok 
 
   // pour réduire le vecteur
   for( size_t i = 7 ; i < v.size(); i++ )  //ajouté sinon caca
   delete v[i];
   v.resize(7);
 
   // pour affecter
   double * x2 = new double( -1 ) ;
   delete v[1]; // ajouté sinon caca
   v[1] = x2 ;
 
   // alors ce qui suit c'est la catastrophe 
   // fill( v.begin(), v.end(), x2 ) ;
   cout << v ;
 
   // Enfin le Chorus final 
   for( size_t i = 0 ; i < v.size() ; i++)
   delete v[i];
}
 
int main()
{
  do1() ;
  return 0 ;
}
Evidemment pour maintenir la stabilité du code des concepteurs les utilisateurs doivent faire des efforts.

Pour le pointeur sur T faut-il s'en remettre au magique pointeur ?

Salut.