Bonjour,
je me pose une question à propos des std::vector : peut-t-on diminuer la taille de la réserve ?
Je m'explique, je veux par exemple créer un vecteur de taille inconnue mais quand même assez conséquente,
du coup j'utilise une réserve pour pouvoir éviter un nombre de trop grand de réallocations.
Puis je remplis mon vecteur (avec moins d'éléments que la taille de la réserve), et ensuite j'aimerai
pouvoir supprimer la réserve restante.
Peut être que cela se fait automatiquement mais je ne crois pas ?
Cela donnerai quelque chose comme celà :
Code :
- std::vector<int> remplirVecteur(const std::vector<int>& v) {
- std::vector<int> vect;
- vect.reserve(10000); // on reserve suffisament d'espace
- // on remplit vect avec les valeurs de v
- for(int i = 0; i < v.size(); i++)
- vect.push_back(v[i]);
- // Ce que j'aimerai faire : vect.reserve.clear(); // = vider la reserve !
- cout << "vect size : " << vect.size() << ", cap = " << vect.capacity() << endl;
- return vect;
- } // remplirVecteur
|
Ici bien entendu j'aurai pu utiliser la taille de v (v.size()) pour réserver la bonne taille mais cela est
juste pour illustrer ce que j'essaye de faire, parce que lorsque je lis des valeurs dans un fichier ou une
base de données je ne connais pas par avance leur nombre !
Merci pour vos réponses.
Nicolas
Message édité par babthefox2002 le 29-07-2005 à 15:46:36