Dois-je utiliser boost::ptr_vector<T> vector<boost::shared_ptr<T> >?

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?)

Si c'est de l'intérêt, mes données réelles de la structure est relativement complexe (voir ici) et, actuellement, de magasins des objets, pas des pointeurs, mais je voudrais changer cela (à l'aide du pointeur de conteneurs), afin de se débarrasser de copie inutile:

typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
d'où vient cette copie inutile de se produire?
Quand vous insérer quelque chose dans le vecteur ou le multimap à partir de ci-dessus.
Quand 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, ces objets seront copiés. C'est un problème lorsque vous avez affaire à des objets qui sont coûteux à copier.

OriginalL'auteur Frank | 2010-09-29