Bonjour,
Je souhaite cr�er et remplir un vecteur de strings � partir d'un fichier texte. J'ai suivi le conseil de la faq :
http://cpp.developpez.com/faq/cpp/?p...ream_iterators
Mon fichier contient 300000 lignes de 2 colonnes. Soit 600000 strings � stocker. Pour faire simple, disons que la taille ne varie pas (en pratique elle varie). Voici le code que j'ai �crit :
J'obtiens bien un vecteur de 600000 strings, pas de probl�me. Mon souci est dans le temps d'ex�cution : 1.4 secondes. Je trouve que c'est anormalement lent. Alors j'ai test� avec un tableau de strings :
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 // ouvre le fichier ifstream file("fichier.txt",ios::in) ; // crée le vecteur de strings vector<string> list ; // réserve la mémoire int size = 600000 ; list.reserve(size) ; // remplit le vecteur copy(istream_iterator<string>(file),istream_iterator<string>(),back_inserter(list)) ; // ferme le fichier file.close() ;
Cette solution avec le tableau de strings s'ex�cute en 0.9 secondes. Je pensais que le vecteur �tait mieux adapt�, et qu'il serait plus rapide. J'aimerais savoir si c'est "normal" ou si j'ai mal compris quelque chose. Je ne suis pas s�r de bien faire la r�serve de m�moire avec le vecteur.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 // ouvre le fichier ifstream file("fichier.txt",ios::in) ; // crée le tableau de strings int size = 600000 ; string * list = new string[size] ; // remplit le tableau for ( int i = 0 ; i < size ; i++ ) file >> list[i] ; // ferme le fichier file.close() ;
Partager