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.
Evidemment pour maintenir la stabilité du code des concepteurs les utilisateurs doivent faire des efforts.
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 ; }
Pour le pointeur sur T faut-il s'en remettre au magique pointeur ?
Salut.
Partager