cs_youma85
Messages postés82Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention28 avril 2011
-
2 mars 2008 à 12:42
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
2 mars 2008 à 14:41
salut bein je suis débutant en stl et j'ai eu ce code j'arrive pas à comprendre ce qu'il fait merci
#include
#include
#include <vector>
using namespace std;
int main()
{
vector iVec;
vector::size_type indice1 = 12345, indice2;
long i;
cout << "iVec.size()\tiVec.capacity()\n";
for (i = 0L; i < 1000L; i++)
{
indice2 = iVec.capacity();
if (indice2 != indice1)
{
cout << setw(8) << iVec.size() << " "<< setw(8) << indice2 << endl;
indice1 = indice2;
}
iVec.push_back(234);
}
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 2 mars 2008 à 14:41
A l'exécution cela donne ça :
iVec.size() iVec.capacity()
0 0 rien de stocké, capacité de stockage nulle !
1 1 on stocke un premier élément, la capacité passe à 1
2 2 on stocke un 2nd élément, la capacité passe à 2 (2 * 1)
3 4 on stocke un 3ème élément, la capacité passe à 4 (2 * 2)
5 8 on stocke un 5ème élément, la capacité passe à 8 (2 * 4)
9 16
17 32
33 64
65 128 ...
129 256
257 512
513 1024 on stocke un 513ème élément, la capacité passe à 1024 (2 * 512)
où l'on s'aperçoit que la capacité du vecteur double à chaque fois qu'il a besoin de se redimensionner !
Jean-François