【问题标题】:linked lists vs arrays [duplicate]链表与数组[重复]
【发布时间】:2014-10-25 01:42:31
【问题描述】:

对不起,如果这个问题已经被问到了......

为什么以及何时应该在向量上使用链表?我只是不喜欢所有这些指针开销......

据我所知:vector 更快,更紧凑,因为没有额外的指针,并且更容易实现;我也认为链表没有利用空间局部性原则,因为节点位于完全随机的内存位置,所以你的代码变得更慢......所以当你使用链表时,你会增加你不想的缓存未命中做...

当然列表的优点是可以通过动态内存分配避免溢出...

总之,我的问题是:如果有的话,你应该在哪里使用链表而不是向量?你更喜欢哪种数据结构?

【问题讨论】:

  • 谷歌也是好朋友:)
  • 当您确定性能差异足够显着时,默认使用向量并使用列表。
  • 鉴于c 标签,这不仅仅是关于std::list,而是关于一般的链表。 stackoverflow.com/q/2429217/179910
  • 我认为这张表说明了一切:bigocheatsheet.com/#data-structures
  • 您列出了vector 的所有优点,但没有列出任何缺点。这些弱点恰好是链表的强项(即插入和删除)

标签: c++ c


【解决方案1】:

链接列表适用于您想要插入或删除项目而不在恒定时间内移动或插入/推送或弹出项目的情况,以及当您不知道元素的数量并且可能不需要随机访问的情况。如需更多信息,请参阅this

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多