为什么“unbounded_array”比“vector”更有效?

2024-03-19

这里说 http://www.boost.org/doc/libs/1_42_0/libs/numeric/ublas/doc/unbounded_array.htm that

无界数组类似于 std::vector 可以在其中生长 大小超出任何固定范围。然而 unbounded_array 旨在最优 表现。因此无界_数组 不会对序列进行建模 std::vector 确实如此。

这是什么意思?


作为一名 Boost 开发人员,我可以告诉您,质疑文档中的陈述是完全可以的;-)

通过阅读这些文档和阅读源代码(参见存储.hpp http://www.boost.org/doc/libs/1_42_0/boost/numeric/ublas/storage.hpp)我可以说,考虑到编写代码时有关 std::vector 实现的一些假设,这在某种程度上是正确的。该代码最初可以追溯到 2000 年,也许最晚可以追溯到 2002 年。这意味着当时许多 STD 实现在优化容器中对象的销毁和构造方面并没有做得很好。通过使用初始大容量向量可以轻松反驳关于不调整大小的主张。我认为,关于速度的说法完全来自这样一个事实:当存储的对象具有简单的实现时,unbounded_array 有特殊的代码用于消除 dtors 和 ctors。因此,当它必须重新排列事物或复制元素时,它可以避免调用它们。与最近的 STD 实现相比,它不会更快,因为新的 STD 实现往往会利用移动语义等功能来进行更多优化。

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

为什么“unbounded_array”比“vector”更有效? 的相关文章

随机推荐

  • ruby 中的三向比较

    确保 ruby 中三个变量全部相等的最简洁方法是什么 例如 dog animal cat animal chicken animal shoe clothing Something like this which doesn t work
  • 创建一个闭包

    我想创建一个闭包 函数生成器 来计算数字的幂 而不使用特定的 Clojure 库来完成此任务 现在 我可以用循环 重复来做到这一点 defn exp1 in num in exp multi loop num in num exp mult
  • 在 Shiny 应用程序中包含一个 javascript 文件

    我需要将 js 库包含到我的 Shiny 应用程序中 目前我使用 includeHTML 将脚本直接包含到 html 代码中 例如 includeHTML URL js 如果我使用tags script 例如 当我尝试浏览js文件时 浏览器
  • 如何将 JointJS 与使用 Angular CLI 构建的应用程序一起使用?

    我已经通过 npm 安装了 jointjs 并安装了 types 并且代码编译 构建良好 Code import Component from angular core import as joint from node modules j
  • 辅音和元音 Swift

    我是 Swift 的新手 谁能向我解释一下为什么我总是遇到这个问题 我正在使用 Xcode 6 4 但这是我的问题 我希望我能解决它 但我需要我的函数接受大字符串 然后返回 Tuple numVowels numConsonants 计算以
  • Virtualenv 没有名为 zlib 的模块

    我正在尝试在 Python2 6 下创建 Python 2 7 虚拟环境 我只是运行 virtualenv python python27 python27 correctly leads to my python installation
  • 仅解压缩特定扩展名

    我有一个包含 jpg png gif 图像的 zip 存档目录 我想解压缩每个存档 仅获取图像并将它们放入具有存档名称的文件夹中 So files archive1 zip files archive2 zip files archive3
  • JSF 2.0 注入不同范围的托管 bean

    我有一个无状态的控制器 负责处理表单 这被定义为ApplicationScoped 在我的页面上 我有一个与支持 bean 关联的表单 定义为ViewScoped 当我想处理表单时出现错误 serverError class com sun
  • 如何在 Blazor 客户端应用程序中使用 Bootstrap 模式?

    我正在尝试显示引导模式然后绑定其按钮 但我无法通过显示模式的第一步 我正在使用 net core 3 1 的 Blazor 客户端模板 我有一个名为 Modal razor 的页面 其中包含我从 getbootstrap com 找到的引导
  • 无法解决依赖关系 - Laravel

    照亮 合同 容器 BindingResolutionException 无法解析 App Jobs BudgetFetch 类中的依赖关系 参数 0 customerId namespace App Http Controllers use
  • 如何在ionic 3中进行水平滚动

    look at my 我在离子卷轴中有 10 个名字 但它像段落一样进入下一行 这是我的 html 代码
  • Cypress 在请求正文中使用文件进行 HTTP POST 时出错

    我从 Cypress 6 8 0 升级到 7 0 1 升级后 当 Cypress 测试之一调用此函数时 async saveTask task file const requestBody new FormData requestBody
  • 更新由 NSFetchedResultsController 管理且在第一部分有 1 个额外单元格的 UITableView

    主详细信息申请 我有一个UITableViewController由一个NSFetchedResultsController及其委托方法 我在表格视图的第一部分还有一个额外的单元格 其中有一个UIWebView其中显示嵌入视频 该单元格不属
  • 获取数组的一部分而不创建新副本

    我正在尝试找到一种解决方案 解决方法来切片非常大的数组而不创建新副本 这是我的问题 假设我有一个大小为 1 亿或更多的 double int 大型数组 我将代表不同事物的许多不同数组存储在一个非常大的数组中 以显着节省内存使用量 因此 我没
  • 如何为 wkwebview 使用 iOS 13 深色模式

    我正在使用 Xcode 11 beta 开发 iOS 13 有什么办法可以在网页视图上支持暗模式吗 我已经为除 WKWebviews 之外的所有其他视图创建了颜色集 如何更改深色模式的网页视图背景和文本颜色 假设您的问题是询问如何根据浅色模
  • 创建专用函数模板的最佳方法是什么?

    有更好的方法来执行以下操作吗 include
  • THREE.js 正交相机缩放到鼠标点

    我正在为我们的 THREE js 应用程序开发正交相机 本质上 该相机将以 2D 方式向用户呈现场景 用户可以选择在 2D 和 3D 相机之间切换 该相机将允许平移和缩放到鼠标点 我可以进行平移 也可以进行缩放 但不能缩放到鼠标点 这是我的
  • 如何将数字加 1 到 NSMutableArray

    如何将 1 和变化的数字之间的每个数字添加到 NSMutableArray 中 以便它可以显示在 UITableView 中 例如 如果当前变化的数字是 8 则数组应包含 1 2 3 4 5 6 7 8 谢谢 我推荐以下方法 不需要数组 给
  • 广播联系人添加/更改?

    有没有我可以注册的标准广播意图BroadcastReceiver每当添加或更改联系人时都会触发该操作 我已经浏览文档有一段时间了 但没有找到任何东西 也许它隐藏在某个深处 而你们中的一个人知道在哪里 我在这里回答我自己的问题 如果有人有更好
  • 为什么“unbounded_array”比“vector”更有效?

    这里说 http www boost org doc libs 1 42 0 libs numeric ublas doc unbounded array htm that 无界数组类似于 std vector 可以在其中生长 大小超出任何