gpt4 book ai didi

c++ - 为什么 std::vector 比 std::deque 更受欢迎?

转载 作者:IT老高 更新时间:2023-10-28 14:00:01 36 4
gpt4 key购买 nike

Possible Duplicate:
Why would I prefer using vector to deque

我很好奇为什么 std::vectorstd::deque 更受欢迎.双端队列在查找方面几乎同样有效,在插入方面效率更高(没有 vector::reserve)并允许在前面插入/删除。

Herb Sutter 曾建议 if you want to use vector, just prefer deque (我在解释)。然而,在最近一次关于 Writing Modern C++ 的谈话中他再次强烈建议将 std::vector 视为默认容器。根据GOTW我之前链接过,即使标准也有类似的措辞。

这种差异有原因吗?仅仅是vector更简单更广为人知,还是有技术原因?还是说 vector 只是一个更酷的名字..?

最佳答案

我不能为别人说话,但我可以为自己说话。

当我第一次阅读 std::deque 时,我认为它很酷,有一段时间我不仅将其视为默认容器,而且几乎将其视为 only 我使用的容器。

然后有人问为什么,我详细阐述了它的优点,为什么它是几乎可以用于所有事物的最佳容器,以及它如何比 std::vector 更通用。

幸运的是,质疑我决定的人很有说服力,我做了一些测试。测试表明,几乎在所有情况下,std::deque 都比 std::vector 慢——通常要慢很多(例如,大约 2)。事实上,在我使用 std::deque 编写的代码中,只需将 std::deque 替换为 std::vector 即可除了少数情况外,所有情况下都可以加速。

从那以后,我在少数情况下使用了 std::deque,但绝对不要再将其视为默认值。一个简单的事实是,在通常的实现中,对于大多数而言,它明显比 std::vector 慢。

不过,我应该补充一点,我有理由确定,通过正确的实现,它可以 在几乎所有情况下都几乎等同于 std::vector。从渐近的角度来看,大多数人使用的表示无疑是很棒的,但在现实世界中(出于多种目的)并没有那么完美。

关于c++ - 为什么 std::vector 比 std::deque 更受欢迎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13758509/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com