<分区>
它们都具有 O(1) 的访问复杂度和 O(n) 的随机插入/移除复杂度。但是 vector 在扩展时由于重新分配和复制而花费更多,而 deque 则没有这个问题。
deque似乎性能更好,但为什么大多数人使用vector而不是deque?
<分区>
它们都具有 O(1) 的访问复杂度和 O(n) 的随机插入/移除复杂度。但是 vector 在扩展时由于重新分配和复制而花费更多,而 deque 则没有这个问题。
deque似乎性能更好,但为什么大多数人使用vector而不是deque?
最佳答案
why most people use vector instead of deque?
因为这是他们被教导的。
vector
和 deque
的用途略有不同。如果您需要的话,它们都可以用作对象的简单容器。在学习 C++ 编程时, 大多数人都需要 - 一个可以将东西放进去、从中取出东西并走过去的桶。
当 StackOverflow 被问及“默认情况下我应该使用哪个容器”之类的问题时,答案几乎总是 vector
。这个问题通常是在学习用 C++ 编程的背景下提出的,在程序员提出这样的问题时,他们还不知道自己不知道什么。还有很多他们还不知道。因此,我们 (StackOverflow) 需要一个容器来满足几乎所有需求,无论好坏,几乎可以在任何上下文中使用,并且不需要程序员在找到接近正确答案的东西之前问过所有正确的问题。此外,该标准特别推荐使用 vector
。 vector
并非对所有用途都是最佳,事实上 deque
在许多常见用途上都优于 vector
- - 但对于学习中的程序员来说,我们应该改变标准对新手 C++ 程序员的建议并没有那么好,因此 StackOverflow 着眼于 vector
。
在学习了 C++ 语法的基础知识以及我们应该说的 C++ 编程背后的策略之后,程序员分为两个分支:那些关心学习更多和编写更好的程序的人,以及那些不关心的人。那些不这样做的人将永远坚持 vector
。我想很多程序员都属于这个阵营。
尝试超越这个阶段的少数程序员开始提出其他问题——就像您在这里提出的问题。他们知道有很多他们还不知道的东西,他们想开始发现那些东西是什么。他们会很快(或不太快)发现在 vector
和 deque
之间进行选择时,他们之前没有想到要问的一些问题是:
然后他们真正开始思考他们正在编写的代码,发现更多他们不知道的东西,然后节拍继续......
关于c++ - 为什么更喜欢 std::vector 而不是 std::deque?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031496/