c++ - STL Containers - vector 、列表和双端队列之间的区别

标签 c++ stl containers

如果我想在容器的开头也推送元素,我应该使用双端队列而不是 vector 吗?什么时候应该使用 list,它有什么意义?

最佳答案

如果您需要在序列的开头和结尾进行有效的插入/删除以及随机访问,请使用 deque;如果您需要在任何地方有效插入,请使用 list,但会牺牲随机访问。 list 元素的迭代器和引用几乎在容器的任何突变下都​​非常稳定,而 deque 具有非常奇特的迭代器和引用失效规则(因此请仔细检查)。

另外,list 是基于节点的容器,而 deque 使用连续内存块,因此内存局部性可能具有渐近复杂度无法捕获的性能影响估计。

deque 几乎可以在任何地方充当 vector 的替代品,并且可能应该被视为 C++ 中的“默认”容器(考虑到其更灵活的内存要求) ;首选 vector 的唯一原因是当您必须保证序列的连续内存布局时。

关于c++ - STL Containers - vector 、列表和双端队列之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650254/

相关文章:

c++ - 将 initializer_list 插入 std::vector 时出现 "Invalid iterator range"

C++ 本地容器

c++ - 将继承同一类的不同类型的对象存储在容器中

amazon-web-services - 调用端点 url 时找不到 AWS API Gateway 404 页面错误

c++ - 访问冲突

c++ - 是否有 "modern"方法来避免这种代码重复

c++ - 如何从 Windows 将闭路电视摄像头传输到 iPhone

c++ - 如何在不生成大量测试客户端应用程序的情况下切换元素和容器类型以进行基准测试?

c++ - 用 vector 的 vector 描述一个很长的矩阵,哪个维度应该是最大的?

c++ - 在 C++ 中找到最小数 +ve 数?