加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如果存储指针,std :: list比std :: vector更好吗?

发布时间:2020-12-16 10:28:20 所属栏目:百科 来源:网络整理
导读:我通常避免使用std :: list,但是在我存储指针的情况下,使用std :: list会更有利,因为我可以随机插入指针而不必移动所有其他指针吗?在std :: vector Some *上存在哪些优点和缺点. 谢谢 解决方法 由于指针的复制构造是微不足道的,因此这里的决定不是关于一个
我通常避免使用std :: list,但是在我存储指针的情况下,使用std :: list会更有利,因为我可以随机插入指针而不必移动所有其他指针吗?在std :: vector< Some *>上存在哪些优点和缺点.

谢谢

解决方法

由于指针的复制构造是微不足道的,因此这里的决定不是关于一个或另一个是否更好地存储指针,而是更好地满足您的需求.

如果你真的需要做很多随机插入(并删除?),那么list可以更好地工作,虽然这不是一个简单的决定 – 也许带有保留空间的向量会更好,即便如此.您是否希望列表的每节点开销只是存储指针?在32位Windows上,列表中每个条目12个字节,加上堆管理开销,每个条目总共20个字节.这也无助于数据本地化随着时间的推移.同时,vector每个条目使用4个字节(同样在32位上),并保证将其元素存储在连续的块中.

除非将指针元素包装为某种类型的智能指针,否则必须以任何方式处理容器擦除/清除/销毁时的内存清理.轻松管理你的Some * s的替代方案将是Boost pointer containers之一.

有关list,vector和deque的一些分析,另请参见here.就个人而言,我越来越认为列表在主流中并没有那么有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读