Bonjour,

j'aimerai savoir quelle est la meilleur pratique pour l'utilisation d'un std::vector.

Sachant que celui-ci fait une copie lors d'un push_back, vaut-il mieux insérer des pointeurs (intelligent ou non) ou insérer l'objet lui-même.

Quel est la meilleurs version :

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
 
#include <vector>
#include <stdio.h>
#include <iostream>
 
int main()
{
	std::vector<std::string*> vec_test;
 
	std::string* s1 = new std::string("Blabla");
 
	vec_test.push_back(s1);
 
	for (std::vector<std::string*>::iterator it = vec_test.begin(); it!=vec_test.end(); ++it)
	{
		delete *it;
	}
 
	return 1;
}
ou la version "simple" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <stdio.h>
#include <iostream>
 
int main()
{
	std::vector<std::string> vec_test;
 
	std::string s1 = "Blabla";
 
	vec_test.push_back(s1);
 
	return 1;
}

Je trouve la première plus efficace (pas de copie des données), mais il y a la gestion des pointeurs.