Bonjour,
J'ai un soucis avec l'allocation d'un vector.
En fait, je n'arrive pas à comprendre pourquoi les exemples suivants ne sont pas équivalents:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //Exemple 1: std::vector<double> v1; v1.reserve(5); // edit: v1.resize(5); v1.push_back(1); v1.push_back(2); v1.push_back(3); v1.push_back(4); v1.push_back(5); std::vector<double> v2 = std::vector<double>(v1.size(), 0.0); v2[v2.size()-1] = 3.14; // !!! seg faultSachant que dans l'Exemple 1 on aura une seg fault (out of range) si on veut accéder au dernier élément du vector (à savoir v2[4]) et pas dans l'Exemple 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //Exemple 2: std::vector<double> v1; v1.reserve(5); // edit: v1.resize(5); v1.push_back(1); v1.push_back(2); v1.push_back(3); v1.push_back(4); v1.push_back(5); std::vector<double> v2; v2.resize(v1.size, 0.0); v2[v2.size()-1] = 3.14; // OK
Pourtant, je vérifie les caractéristiques du vector v2 qui indiquent: size =5 et capacity = 5.
Je ne comprends absolument pas pourquoi.
Partager