为什么我更喜欢使用向量而不是双端队列

2024-01-12

Since

  1. 它们都是连续的内存容器;
  2. 在功能方面,双端队列几乎拥有向量所拥有的一切,但更多,因为在前面插入效率更高。

为什么有人会更喜欢std::vector to std::deque?


中的元素deque are not内存中连续的;vector元素保证是。因此,如果您需要与需要连续数组的普通 C 库进行交互,或者您(非常)关心空间局部性,那么您可能更喜欢vector。此外,由于有一些额外的簿记,其他操作可能(稍微)比同等操作贵vector运营。另一方面,使用许多/大型实例vector可能会导致不必要的堆碎片(减慢对new).

另外,正如所指出的StackOverflow 上的其他地方 https://stackoverflow.com/questions/139824/vector-or-deque/139836#139836,这里有更多好的讨论:http://www.gotw.ca/gotw/054.htm http://www.gotw.ca/gotw/054.htm .

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

为什么我更喜欢使用向量而不是双端队列 的相关文章

  • gtest 和 gmock 有什么区别?

    我试图理解的目的google mock Google 的 C 模拟框架 https github com google googletest blob master googlemock README md 我已经与gtest较早 但我还是
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 异步方法中的异常未被捕获

    下面的代码没有捕获我的OperationCancelEException 它是通过调用抛出的ct ThrowIfCancellationRequested public partial class TitleWindow Window IA
  • 基于 MS Bot Framework 中的响应分支对话框/表单

    我们正在尝试使用 MS Bot Framework 但尚未完全弄清楚如何实现此场景 我们有一个 LUIS 对话框 类型 它工作正常并且经过适当的培训 以常见的三明治为例 LUIS 意图寻找的基本内容是用户询问订单状态 如果问题中提供了订单号
  • C++ 私有静态成员变量

    此 C 代码在编译时产生链接器错误 A h class A public static void f private static std vector
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 获取给定EntityType的导航属性

    我在用VS2010 EF4 0 需要如下功能 private string GetNaviProps Type entityType eg typeof Employee NorthwindEntities en new Northwind
  • 如何附加到 xml

    我有这个xml
  • 从窗口内容截取屏幕截图(无边框)

    我正在寻找有关如何使用 C 将表单内容保存在位图中的解决方案 我已经尝试过使用 DrawToBitmap 但它捕获了所有带边框的窗口 这就是这段代码的结果 public static Bitmap TakeDialogScreenshot
  • 枚举器上的 [[maybe_unused]]

    查看规格 maybe unused http en cppreference com w cpp language attributes 它指出 出现在类 typedef 变量 非静态数据成员 函数 枚举或枚举器的声明中 如果编译器对未使用
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • C# 的空条件委托调用线程安全吗? [复制]

    这个问题在这里已经有答案了 这就是我一直以来编写事件引发者的方式 例如属性更改 public event PropertyChangedEventHandler PropertyChanged private void RaisePrope
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • 为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

    include
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter

随机推荐

  • AWS Elastic Beanstalk NodeJS 和日志

    我想将我的 NodeJS 项目从单个 EC2 迁移到 ElasticBeanstalk 在我当前的代码中 我使用依赖项 log4js 在文件系统上创建日志文件 在 EC2 上 这可以创建 但在 ElasticBeanstalk 中记录某些内
  • CLion 项目中所有错误的列表

    CLion 2016 2 有助于检测您正在编辑的文件中的潜在错误 这些错误可以在代码右侧的验证栏中看到 但这只是一个文件 有没有办法 如工具窗口 来获取整个项目或其特定部分中所有此类警告的列表 如果它还列出了编译器的警告和错误 那就加分了
  • 如何在引导的 Firefox 扩展中实现 XPCOM 组件 (nsIContentPolicy)

    我有一个 Firefox 的引导扩展 现在我想实现 nsIContentPolicy XPCOM 组件 我写了一个组件模块代码 现在我想注册这个组件 我想注册组件的原因是我想将我的组件添加到nsICategoryManager addCat
  • Kubernetes 作业被创建但不会立即执行

    例如 创建如下所示的就业机会 apiVersion batch v1 kind Job metadata name test job sebas spec template spec containers name pi image per
  • OpenCV Mat 处理时间

    我想知道 OpenCV 函数的 src 源 和 dst 目标 使用不同的变量是否会对处理时间产生影响 我有下面两个函数 做同样的事情 public static Mat getY Mat m Mat mMattemp new Mat Img
  • Swift 2.0 中的 do { } catch 不会处理从这里抛出的错误

    更新 swift 2 0 后 我遇到了 do try catch 错误 如下图所示 我怎样才能解决这个问题 谢谢 该错误告诉您封闭的捕获并不详尽 这是因为自动生成的catch块只是捕获NSError对象 编译器无法判断是否有其他对象Erro
  • 变基以及变基推送提交意味着什么

    人们常说 您不应该对已经推送的提交进行变基 这可能意味着什么 To understand this we need to understand a bit about how git works A git repository is a
  • 如何使用 Jackson 和 Spring Boot 提供自定义反序列化器

    我有以下三个应用程序 项目1举行 业务逻辑 Spring Cloud Function 一个接口IDemo实体 项目2 AWS 特定的处理程序 一种实现IDemo实体 带有 DynamoDB 特定的注释 该项目基于Spring Boot 项
  • 如何在 chromedriver 中启用地理定位支持?

    我需要使用 Selenium 测试 JS 地理定位功能 并且我正在使用 chromedriver 在最新的 Chrome 上运行测试 现在的问题是 Chrome 提示我在测试期间启用地理定位 并且我不知道如何在运行时单击那个小栏 所以我拼命
  • Prolog:访问从父规则读取

    我想要一个特定的规则来读取 SWI Prolog 中的用户输入数据 例如 process do stuff read values do more stuff with X and Y here read values write Plea
  • 如何让自定义任务标签在 Eclipse 中工作?

    尝试了很多次 但我就是不知道如何在任务中定义自定义标签 我使用该对话框并创建了不同的内容 例如 TODO2 V2 或 TOVO 仅用于测试 但这些都不会扫描到任务 即使我做了类似 TODO2 或 源代码中的 V2 或 TOVO 我也尝试过重
  • 开始卡桑德拉——使用昆德拉?还有别的事吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正在接触 Cassandra 我们没有人对这个特定平台有任何经验 但都是 JavaEE JPA 等方面经验丰富的开发人员 我遇到了 Kund
  • Pivotal Cloud Foundry 登录问题

    我有一个 PWS 帐户 安装 Cloud Foundry 命令行界面 CLI 后 我尝试从 Windows 命令提示符 CYGWIN 终端和 Gitbash 登录 在上述所有情况下 我都无法登录cf login 但如果我发出命令 我就可以登
  • Grails - 将 UUID 渲染为 JSON

    我使用 UUID 作为我的域类的生成器 当我将域对象呈现为 JSON 时 id 如下所示 id class java util UUID leastSignificantBits 7570618374586820490 mostSignif
  • 在IIS中托管asp.net core应用程序,以便从网络内的其他PC访问

    如何在 Windows IIS 中托管我的 Asp Net Core 1 2 或 2 1 Web 应用程序 以便能够从本地网络 或我的虚拟操作系统 中的其他 PC 访问它 我的电脑是桌面 Windows 10 Pro 不是 Win Serv
  • C++0x 标准中对导出关键字的最佳解释是什么?

    我知道在最初的C 0x标准中有一个功能叫做export 但我找不到这个功能的描述或解释 它应该做什么 另外 哪个编译器支持它 尽管标准 C 没有这样的要求 但某些编译器要求所有函数模板都需要在使用它的每个翻译单元中可用 实际上 对于这些编译
  • 如何关闭 PDF 文件并重新创建它? (使用中的文件)

    我有一个可以创建 PDF 文件的 Java 应用程序 例如 我从程序创建一个简单的文件 我已经构建了代码来打开该文件 所以我创建了该文件 我看到了它 然后就可以了 如果我想修改该文件 我必须关闭该文件然后重新创建它 如果我不关闭该文件 则会
  • Internet Explorer 内容插件中的可编写脚本的对象

    虽然浏览器帮助程序对象有很多指南 但我很难找到有关如何为内容插件 即嵌入在网站中 实现可编写脚本的对象 即除了主控件之外 的资源 为了避免误解 问题是关于插件对象可能返回到网站中的脚本的可脚本化对象 例如来自方法调用 虽然我猜想这些的一般可
  • WPF - DataGridComboBoxColumn 示例

    我有一个包含 2 列的数据网格 一列包含角色信息 另一列应有一个包含可用用户列表的组合框 组合框中的数据与第一列中的数据无关 组合框没有数据上下文 只有项目源 而且我似乎也无法使用绑定 这一事实让我感到困惑 对于表中的数据和组合框中的数据使
  • 为什么我更喜欢使用向量而不是双端队列

    Since 它们都是连续的内存容器 在功能方面 双端队列几乎拥有向量所拥有的一切 但更多 因为在前面插入效率更高 为什么有人会更喜欢std vector to std deque 中的元素deque are not内存中连续的 vector