我应该使用 boost::ptr_vector 还是 vector >?

2023-12-30

我需要一个指针容器。你会推荐吗boost::ptr_vector<T> or std::vector<boost::shared_ptr<T> >? (或者是其他东西?)

如果您感兴趣的话,我的实际数据结构相对复杂(请参阅here https://stackoverflow.com/questions/3771467/is-this-use-of-nested-vector-multimap-map-okay)并且当前存储对象,而不是指针,但我想更改它(使用指针容器),以便摆脱不必要的复制:

typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;

谁拥有该对象?如果容器拥有对象(意味着对象的寿命不应该比容器长),请使用ptr_vector。否则,使用向量shared_ptrs。标准库容器(例如std::vector or std::list)拥有它们所包含的对象,因此 a 的语义ptr_vector更接近那个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 boost::ptr_vector 还是 vector >? 的相关文章

随机推荐