为什么我更喜欢使用 vector 来 deque

2021-12-21 00:00:00 deque vector c++ stl

自从

  1. 它们都是连续的内存容器;
  2. 在功能方面,deque 几乎拥有 vector 的所有功能,但更多,因为在前面插入效率更高.

为什么有人更喜欢 std::vector 而不是 std::deque?

Why whould anyone prefer std::vector to std::deque?

推荐答案

deque 中的元素在内存中不连续;vector 元素保证是.因此,如果您需要与需要连续数组的普通 C 库进行交互,或者如果您(非常)关心空间局部性,那么您可能更喜欢 vector.此外,由于有一些额外的簿记,其他操作可能(略)比其等效的 vector 操作昂贵.另一方面,使用多个/大型 vector 实例可能会导致不必要的堆碎片(减慢对 new 的调用).

Elements in a deque are not contiguous in memory; vector elements are guaranteed to be. So if you need to interact with a plain C library that needs contiguous arrays, or if you care (a lot) about spatial locality, then you might prefer vector. In addition, since there is some extra bookkeeping, other ops are probably (slightly) more expensive than their equivalent vector operations. On the other hand, using many/large instances of vector may lead to unnecessary heap fragmentation (slowing down calls to new).

此外,正如 StackOverflow 上的其他地方所指出的,这里有更多很好的讨论:http://www.gotw.ca/gotw/054.htm.

Also, as pointed out elsewhere on StackOverflow, there is more good discussion here: http://www.gotw.ca/gotw/054.htm .

相关文章