我需要一个指针的容器。您会推荐boost::ptr_vector<T>
或std::vector<boost::shared_ptr<T> >
? (或其他东西?)我应该使用boost :: ptr_vector <T>还是vector <boost :: shared_ptr <T>>?
如果感兴趣,我的实际数据结构相对复杂(请参阅here)并且当前存储对象,而不是指针,但我想要更改(使用指针容器),按顺序摆脱不必要的复制:
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
这种不必要的复制发生在哪里? – 2010-09-29 14:34:20
@Idan:任何时候你从上面插入东西到vector或multimap中。 – Frank 2010-09-29 14:40:40
@Idan:当你有一个存储指针的容器时,当添加数据时只有指针会被复制,当你存储对象时,实际的对象将被复制。当处理昂贵的对象时,这是一个问题。 – sbi 2010-09-29 15:46:42