是否有任何 std::set 实现不使用红黑树?

2023-11-25

有没有人见过 STL 的实现,其中 stl::set 是not作为红黑树实现?

我问的原因是,在我的实验中,B 树的表现优于std::set(以及其他红黑树实现)的系数为 2 到 4,具体取决于 B 的值。我很好奇,当似乎有更快的数据结构可用时,是否有令人信服的理由使用红黑树。


谷歌的一些人实际上建立了一个C++ 标准库容器的基于 B 树的实现。它们似乎比标准二叉树实现具有更好的性能。

不过,有一个问题。 C++ 标准保证从映射或集合中删除元素只会使指向映射或集合中相同元素的其他迭代器无效。对于基于 B 树的实现,由于节点分裂和合并,这些新结构上的擦除成员函数可能会使树中其他元素的迭代器无效。因此,这些实现并不是标准实现的完美替代,并且不能在一致的实现中使用。

希望这可以帮助!

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

是否有任何 std::set 实现不使用红黑树? 的相关文章

随机推荐

  • 浮点数学有问题吗?

    考虑以下代码 0 1 0 2 0 3 gt false 0 1 0 2 gt 0 30000000000000004 为什么会出现这些不准确的情况 Binary 浮点数学就是这样 在大多数编程语言中 它基于IEEE 754 标准 问题的关键
  • 在 Angular2 (Typescript) 中实现动态路由 [重复]

    这个问题在这里已经有答案了 RouteConfig 类可用于装饰具有路由功能的组件 RouteConfig 并为该组件定义了某些路由定义 现在 问题是在运行时 动态 注入这些路由定义 原因是 假设我有一个应用程序 其中我必须显示 UI 并定
  • Selenium 元素选择器 - 我认为 xPath 最慢?

    我对一个公共网站进行了一些测试 看看是否可以发现一些不同 Selenium CSS 选择器的性能差异 我运行了一个包含五个节点的集线器 mac chrome local mac safari local mac ff local win7
  • Xcode 4.2 链接错误:libz 问题?

    将项目移至 Xcode 4 2 时 我在 Xcode 4 0 3 中编译和链接正常的项目上遇到了许多 Mach O 链接器未解决的错误 例如 crc32 expf 和 UnwindSjLj Register 我怀疑这可能是 libz 问题
  • CUDA:如何使用 -arch 和 -code 以及 SM 与 COMPUTE

    我仍然不确定在使用 nvcc 构建时如何正确指定代码生成的体系结构 我知道我的二进制文件中嵌入了机器代码和 PTX 代码 并且可以通过控制器开关进行控制 code and arch 或两者的组合使用 gencode 现在 根据this除了两
  • Facebook 应用程序适用于所有浏览器,但不适用于 IE8

    我正在开发一个 Facebook 应用程序 Stragnly 该应用程序在大多数浏览器上运行良好 我在 FF chrome 和 safari 上测试过它 并且在所有浏览器上运行良好 然而 当我在 IE8 上测试时 在尝试对其中一个页面进行
  • 如何获取字符串形式的 JsonCPP 值?

    我正在使用解析 json 数据JsonCpp 我真的不需要理解数据 我只需要打印出一些属性及其值 这在某种程度上很难做到 首先我需要知道该值是什么类型 然后获取该值 然后再次将其转换为字符串 有一个样式编写器 但我不想使用它 因为它在末尾附
  • WebView 到 SizedBox Flutter

    我想将自定义 webview 添加到 flutter 中的 sizedBox 中 我尝试这样做 但出现错误 code override Widget build BuildContext context SystemChrome setEn
  • 棒棒糖上完全透明的状态栏和导航栏

    我正在尝试制作一个安卓启动器 我想实现一个完全透明的状态栏和导航栏 这是我的主题xml文件
  • 当我提前不知道服务器名称和端口时,如何在企业环境中设置 grails.serverURL?

    我们有一个 Grails 2 0 中的应用程序 当我们运行时我们可以使用它localhost 8080 In Config groovy 该应用程序有一个grails serverURL必须为当前主机和当前应用程序名称设置的属性 然而 在我
  • 更改 tomcat 的 catalina.pid 位置

    catalina pid 不在应有的 tomcat bin 文件夹中 并且在 tomcat 启动期间也没有在该文件夹中创建它 问题是我如何 在哪里 重新定义 catalina pid 的路径以强制它在正确的文件夹中创建 提前致谢 根据 to
  • 更改 R 中的临时目录[重复]

    这个问题在这里已经有答案了 我正在使用 Windows 虚拟机 并且在其上安装了 R 和 RStudio 并且我正在尝试更改 R 写入临时文件的目录 当我启动 R 时 我尝试更改临时目录 然后关闭 R 当我重新启动 R 并尝试tempdir
  • 如何在 .Net 中创建 Ntlm Type 1 和 Type 3 消息

    我需要为 NTLM 握手创建类型 1 消息和类型 3 消息 是否有任何 Net API 可以实现这一点 本质上 该应用程序是基于 WPF 的 但使用 Socket 来从服务器传输数据 使用套接字是一项技术要求 但问题是当用户需要使用代理服务
  • Android,删除我的数据目录中的文件?

    我的应用程序在应用程序的数据目录中存储了运行所需的一些文件 data data com example myapp files filehere file 当我的应用程序从市场更新时 清除数据目录中的文件并将它们更新为刚刚下载的新包中的最新
  • CoordinatorLayout 搞乱了 setError 弹出位置

    我面临一个问题EditText setError弹出位置 我使用以下代码来创建布局 活动配置文件 xml
  • >> 和 << 运算符重载

    我刚刚为我的编程课做了一个测验 并答错了这个问题 函数的返回类型 使运算符超载 lt lt 必须是一个 对 ostream 对象的引用 这对我来说似乎根本不对 当然 C 比这更开放 但我想我还是会在这里问 这如何是对的 或错的 当涉及到运算
  • 迭代数组中未定义的方法

    我最近发现 map不迭代未定义的由有洞数组创建 其各个索引已定义的数组 但有些未定义 Holed var array array 0 1 array 2 3 array gt 1 undefined 3 Not Holed var arra
  • 在Python中导入包

    我可能错过了一些明显的东西 但无论如何 当你导入像这样的包时os在 Python 中 您可以立即使用任何子模块 子包 例如这有效 gt gt gt import os gt gt gt os path abspath 但是 我有自己的包 其
  • Three.js 第一人称控件

    我正在使用 Three js 和 WebGL 但无法完全按照我想要的方式获得控件 我选择尝试 滚动我自己的 控件 因为 Three js 的 FirstPersonControls 不使用指针锁 无论如何 我从内置的 FirstPerson
  • 是否有任何 std::set 实现不使用红黑树?

    有没有人见过 STL 的实现 其中 stl set 是not作为红黑树实现 我问的原因是 在我的实验中 B 树的表现优于std set 以及其他红黑树实现 的系数为 2 到 4 具体取决于 B 的值 我很好奇 当似乎有更快的数据结构可用时