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

2024-01-08

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


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

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

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

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

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

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 重载<<的返回值

    include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 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如果您需要在任何地方进行高效插入 而牺牲