为什么更喜欢 std::vector 而不是 std::deque? [复制]

2024-03-07

它们的访问复杂度均为 O(1),随机插入/删除复杂度为 O(n)。但是由于重新分配和复制,向量在扩展时成本更高,而双端队列则没有这个问题。

看起来deque的性能更好,但是为什么大多数人使用vector而不是deque呢?


why most people use vector instead of deque?

因为这就是他们被教导的。

vector and deque其用途略有不同。如果您需要的话,它们都可以用作简单的对象容器。在学习 C++ 编程时,is大多数人所需要的就是一个桶,可以把东西放进去,从里面取出东西,然后走过去。

当 StackOverflow 被问到“默认情况下我应该使用哪个容器”之类的问题时,答案几乎总是如此vector。这个问题通常是在学习 C++ 编程的背景下提出的,当程序员问这样的问题时,他们还不知道自己不知道什么。还有很多他们还不知道。因此,我们(StackOverflow)需要一个容器,它可以满足几乎所有需求(无论好坏),可以在几乎任何上下文中使用,并且不需要程序员在得到近似正确答案之前提出所有正确的问题。此外,该标准特别建议使用vector. vector isn't best适用于所有用途,事实上dequevector对于许多常见用途 - 但对于学习程序员来说,我们应该改变对新手 C++ 程序员的标准建议,这并没有那么好,所以 StackOverflow 登陆vector.

在学习了语法基础知识以及 C++ 编程背后的策略之后,程序员分成了两个分支:那些愿意学习更多内容并编写更好程序的人,以及那些不愿意学习的人。那些不这样做的人会坚持下去vector永远。我认为很多程序员都属于这个阵营。

尝试超越此阶段的罕见程序员开始提出其他问题 - 就像您在这里问的问题。他们知道还有很多事情他们还不知道,他们想开始发现这些东西是什么。他们会很快(或不太快)发现,在两者之间进行选择时vector and deque,一些他们之前没有想到要问的问题是:

  1. 我需要内存是连续的吗?
  2. 我需要避免大量重新分配吗?
  3. 插入后是否需要保留有效的迭代器?
  4. 我是否需要我的集合与某些古老的类似 C 的函数兼容?

然后他们真正开始思考他们正在编写的代码,发现更多他们不知道的东西,然后节奏继续......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么更喜欢 std::vector 而不是 std::deque? [复制] 的相关文章

随机推荐