我通常避免使用std :: list,但是在我存储指针的情况下,使用std :: list会更有利,因为我可以随机插入指针而不必移动所有其他指针吗?这会带来哪些优点和缺点std::vector<Some*>
谢谢
由于指针的复制构造是微不足道的,因此这里的决定不是关于一个或另一个是否更好地存储指针,而是更好地满足您的需求.
如果你真的需要做很多随机插入(和删除?)然后list可以更好地工作,虽然它不是一个简单的决定 - 也许有一个vector预留空间是可取的,即便如此.你想要一个listjust 的每节点开销来存储指针吗?在32位Windows上,每个条目中有12个字节list,加上堆管理开销,每个条目总共20多个字节.这也无助于数据本地化随着时间的推移.同时,vector每个条目使用4个字节(再次使用32位)并保证将其元素存储在连续的块中.
除非将指针元素包装为某种类型的智能指针,否则你必须以任何方式处理erase/ clear/破坏容器的内存清理.轻松进行内存管理的Some*另一种方法是Boost指针容器之一.
另见这里的一些分析list,vector和deque.就个人而言,我越来越list认为在主流中没有那么有用的观点.
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |