Comme je comprends si je ne stocke pas de pointeurs, tout en C++ est copié, ce qui peut conduire à de mauvaises performances (ignorer la simplicité de mon exemple). Donc je pensais stocker mes objets comme des pointeurs au lieu d'un objet string à l'intérieur de mon vecteur, c'est mieux pour la performance? (Assumant j'ai de très longues ficelles et beaucoup d'entre eux).C++ vecteurs et pointeurs
Le problème lorsque je tente de itérer sur mon vecteur de pointeurs de chaîne est je ne peux pas extraire la valeur réelle de leur
string test = "my-name";
vector<string*> names(20);
names.push_back(&test);
vector<string*>::iterator iterator = names.begin();
while (iterator != names.end())
{
std::cout << (*iterator) << ":" << std::endl;
// std::cout << *(*iterator); // fails
iterator++;
}
Voir la ligne a commenté, je n'ai aucun problème à recevoir le pointeur de la chaîne. Mais quand j'essaye d'obtenir la valeur de pointeurs de chaîne j'obtiens une erreur (je ne pourrais pas trouver ce qu'excute exactement l'erreur est mais le programme échoue juste).
J'ai également essayé de stocker (itérateur) dans une nouvelle chaîne variable et mais cela n'a pas aidé?
@mads Echoue? Prend une exception? Ne compile pas? Le test est-il toujours dans la portée? – Lou
null pointeurs et pointeurs vers des variables d'étendue locales? pas étonnant que vous ayez des problèmes pour obtenir les valeurs réelles qu'ils pointent à –
Avez-vous profilé votre code et prouvé que c'est un problème acutal? Ou êtes-vous en micro-optimisation prematureley? –