为什么我更喜欢使用 vector 来 deque
自从
- 它们都是连续的内存容器;
- 在功能方面,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 .
相关文章