J'ai besoin d'un conteneur de pointeurs. Recommanderiez-vous boost::ptr_vector<T>
ou std::vector<boost::shared_ptr<T> >
? (Ou quelque chose d'autre?)Dois-je utiliser boost :: ptr_vector <T> ou vectoriel <boost :: shared_ptr <T>>?
Si cela est intéressant, ma structure de données réelle est relativement compliquée (voir here) et stocke actuellement des objets, pas des pointeurs, mais je voudrais changer cela (en utilisant des conteneurs pointeur), afin pour se débarrasser de la copie inutile:
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
où cette copie inutile se produit-elle? –
@Idan: Chaque fois que vous insérez quelque chose dans le vecteur ou le multimap d'en haut. – Frank
@Idan: Lorsque vous avez un conteneur qui stocke des pointeurs, seul le pointeur sera copié lors de l'ajout de données, lorsque vous stockez des objets, les objets réels seront copiés. C'est un problème quand vous traitez avec des objets qui sont chers à copier. – sbi