STL 容器 - 矢量、列表和双端队列之间的区别

2024-01-08

如果我想将元素也推入容器的开头,我应该使用双端队列而不是向量吗?我什么时候应该使用列表以及它的意义是什么?


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

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

deque可以作为替代品vector几乎无处不在,并且可能应该被视为 C++ 中的“默认”容器(由于其更灵活的内存要求);唯一选择的理由vector就是当你的序列必须有保证的连续内存布局时。

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

STL 容器 - 矢量、列表和双端队列之间的区别 的相关文章

随机推荐

  • MVC 授权属性拒绝

    我正在使用Authorize 属性来保护我的控制器 操作 并且只想向未经身份验证的用户显示登录操作 或者换句话说 拒绝对经过身份验证的用户的访问 我在网上找不到任何涉及拒绝权限或允许负面权限 即 LoggedIn 的内容 有人可以指出我正确
  • 让 ORMLite 对结构使用正确的序列化

    tl dr 我正在结构上注册序列化器和反序列化器 序列化器未被调用 但解串器被调用 我怎样才能解决这个问题 它适用于引用类型 并且执行JsConfig
  • 如何在 C# 中进行非阻塞套接字调用来确定连接状态?

    Socket 上 Connected 属性的 MSDN 文档说明如下 Connected 属性的值 反映连接的状态 截至最近一次操作 如果 你需要确定当前 连接状态 进行 非阻塞 零字节发送调用 如果 调用成功返回或 抛出 WAEWOULD
  • CefSharp 中的可拖动无边框窗口

    我想在某些 HTML 元素上实现带有拖动逻辑的无边框窗口 我找到了一些工作示例 例如适用于 Chrome 的无框窗口 https chrome google com webstore detail frameless window samp
  • iOS6 中的 CoreMIDI/PGMidi 虚拟 midi 错误

    面临两个错误 此代码在 iOS 4 和 5 中有效 但更新到 6 后 它不起作用 我发现了以下内容 但不知道如何在代码中修复它 从 iOS 6 开始 应用程序需要在其 UIBackgroundModes 中拥有音频键才能使用 CoreMID
  • Mvvm交叉绑定

    我尝试将小部件绑定到视图模型属性 但出现异常 MvxBind Warning 14 76 Failed to create target binding for binding Signature for Order ClientSigna
  • 创建 WCF 消息的缓冲副本

    我在消息检查器中有以下代码来检查响应正文 我知道 WCF 消息只能读取一次 因此我首先创建一个副本 但使用以下代码我仍然收到错误 此消息无法支持该操作 因为它已被读取 我错过了什么吗 MessageBuffer buffer message
  • Firefox 扩展自定义字体

    我正在使用 Firefox Add on SDK 创建扩展并执行 PageMod 这段代码位于main js exports main function var pageMod require sdk page mod pageMod Pa
  • django-allauth:模块“accounts.forms”未定义“SignupForm”类

    我收到以下错误 django core exceptions ImproperlyConfigured 模块 accounts forms 没有定义 SignupForm 类 设置 py ACCOUNT SIGNUP FORM CLASS
  • 动态设置错误动作的布局文件

    我知道有不同的方法来选择布局文件 可以办到 在配置中 with Yii app gt layout with Controller layout 我有一些使用不同布局文件的控制器 如下所示 class FirstController ext
  • 我应该模拟与我的测试对象交互的所有对象吗?

    我正在努力知道如何决定应该模拟与我的测试对象交互的哪些对象 class MyClass private Customer customer private Invoice invoice private PrintService ps pr
  • 在 .NET 中初始化空变量

    在 NET 中初始化 null 变量的正确方法是什么 我的一位同事告诉我 将变量硬定义为 null 会降低速度 int var1 good practice string s1 good practice int var2 0 bad pr
  • 如何使用 Java HttpServer/HttpExchange 获取 GET 中的查询字符串?

    我正在尝试用 Java 创建一个简单的 HttpServer 来处理 GET 请求 但是当我尝试获取请求的 GET 参数时 我注意到 HttpExchange 类没有相应的方法 有人知道读取 GET 参数 查询字符串 的简单方法吗 这就是我
  • NgStyle 返回:ERROR 错误:找不到不同的支持对象 '{"background-color":"blue"}'

    在我的模板中使用这个 span HELLO span 在我的组件中 myStyle string return background color blue 我越来越 ERROR Error Cannot find a differ supp
  • css 过渡不透明度淡入淡出背景

    我正在做一个transition当用户将鼠标悬停在图像上时 它会淡入透明白色 我的问题是我需要将颜色更改为黑色 我尝试过简单地添加background black 到包含的类transition 但不幸的是它不起作用 它仍然褪成白色透明 我
  • 是否可以继承 C++11 智能指针并覆盖相关运算符?

    根据cppreference com http en cppreference com w cpp memory shared ptr std shared ptr提供了一整套相对运算符 出于某些目的 我更希望使用相对运算符来根据比较引用的
  • 如何从html图像标签获取class和src

    我想检索课程并src使用正则表达式的图像标签 的位置class and src可以在任何地方 我能够得到src from
  • Jasmine angularjs - 监视控制器初始化时调用的方法

    我目前正在使用 Jasmine 与 Karma Testaulous 和 Web Storm 来编写单元测试 我在监视控制器初始化时立即调用的方法时遇到问题 是否可以监视控制器初始化时调用的方法 我的控制器代码 我试图监视的方法是getSe
  • 按下按钮后如何提示用户授予推送通知权限?

    I read 如何控制何时在 iOS 中提示用户推送通知权限 https stackoverflow com questions 30817069 how to control when to prompt user for push no
  • STL 容器 - 矢量、列表和双端队列之间的区别

    如果我想将元素也推入容器的开头 我应该使用双端队列而不是向量吗 我什么时候应该使用列表以及它的意义是什么 Use deque如果您需要在序列的开头和结尾以及随机访问时进行高效的插入 删除 使用list如果您需要在任何地方进行高效插入 而牺牲