I need a container of pointers. Would you recommend boost::ptr_vector<T> or std::vector<boost::shared_ptr<T> >? (Or something else?)
If that’s of interest, my actual data structure is relatively complicated (see here) and currently stores objects, not pointers, but i’d like to change that (using pointer containers), in order to get rid of unnecessary copying:
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
Who owns the object? If the container owns the objects (meaning the objects should not live longer than the container), use a
ptr_vector. Otherwise, use a vector ofshared_ptrs. Standard library containers (such asstd::vectororstd::list) own the objects they contain, so the semantics of aptr_vectoris closer to that.