为什么我更喜欢使用向量deque [英] Why would I prefer using vector to deque
问题描述
由于
- 它们都是连续的内存容器;
- they are both contiguous memory containers;
- feature wise, deque has almost vector has but more, since it is more efficient to insert in the front.
为什么有人喜欢 std :: vector
到 std :: deque
?
deque
中的元素在内存中不是连续的; 矢量
元素保证为。因此,如果你需要与需要连续数组的简单C库交互,或者如果你关心空间局部性,那么你可能更喜欢 vector
。此外,由于有一些额外的簿记,其他操作可能比它们的等价向量
操作更贵。另一方面,使用向量的许多/大实例可能导致不必要的堆碎片(减慢对
new
)。
此外,如指出其他地方StackOverflow ,这里有更好的讨论: http://www.gotw.ca/gotw/054.htm 。
Since
Why whould anyone prefer std::vector
to std::deque
?
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
).
Also, as pointed out elsewhere on StackOverflow, there is more good discussion here: http://www.gotw.ca/gotw/054.htm .
这篇关于为什么我更喜欢使用向量deque的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!