【发布时间】:2014-10-25 01:42:31
【问题描述】:
对不起,如果这个问题已经被问到了......
为什么以及何时应该在向量上使用链表?我只是不喜欢所有这些指针开销......
据我所知:vector 更快,更紧凑,因为没有额外的指针,并且更容易实现;我也认为链表没有利用空间局部性原则,因为节点位于完全随机的内存位置,所以你的代码变得更慢......所以当你使用链表时,你会增加你不想的缓存未命中做...
当然列表的优点是可以通过动态内存分配避免溢出...
总之,我的问题是:如果有的话,你应该在哪里使用链表而不是向量?你更喜欢哪种数据结构?
【问题讨论】:
-
谷歌也是好朋友:)
-
当您确定性能差异足够显着时,默认使用向量并使用列表。
-
鉴于c 标签,这不仅仅是关于
std::list,而是关于一般的链表。 stackoverflow.com/q/2429217/179910 -
我认为这张表说明了一切:bigocheatsheet.com/#data-structures
-
您列出了
vector的所有优点,但没有列出任何缺点。这些弱点恰好是链表的强项(即插入和删除)