为什么C++ STL映射容器的复杂度是O(log(n))?

2023-12-26

对于 C++ STL 容器,例如vector and list,查找元素并插入或删除它们的复杂性是不言而喻的。然而,对于map容器,尽管我从阅读中知道访问和插入复杂性/性能是 O(log(n)),但我无法计算出why。我显然对地图的理解不够深入,因此非常感谢有关此主题的一些启发。


映射或集合的元素包含在树结构中;每次检查树的节点时,您都​​会确定要查找/插入的元素是否小于或大于该节点。您需要执行此操作的次数(对于正确平衡的树)是 log2(N),因为每次比较都会抛出一半的可能性。

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

为什么C++ STL映射容器的复杂度是O(log(n))? 的相关文章

  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • 如何更改默认的 git 提交消息

    我在prepare commit msg 文件中添加了对提交消息的一些更改 然后执行此命令 git config global commit template git hooks prepare commit msg 之后 当我执行 git
  • Node.js 缓存代理服务器

    我正在尝试使用node js 创建一个http 缓存代理服务器 我可以在其中转发到任何网页并将它们缓存在我的本地磁盘上 以下是我的第一次尝试代码 var http require http url require url sys requi
  • Galaxy Tab 在设备上调试?

    有人对 Galaxy Tab 进行过设备调试吗 我有一个普通的 Galaxy Tab 虽然 Eclpise 会让我在设备上 运行 我的应用程序 但如果我在 eclpise 中单击 调试 它不会执行任何操作 也不会尝试连接到调试器 Ideas
  • 使用 istio 作为外部 TLS 服务的反向代理

    Istio 允许您在 a 中路由 http 请求VirtualService到外部主机提供ServiceEntry存在 例如 apiVersion networking istio io v1alpha3 kind ServiceEntry
  • 未找到名称为“${body}= 创建词典”的关键字

    settings Library RequestsLibrary Library Collections Library OperatingSystem Library SeleniumLibrary Variables username
  • python numpy 成对编辑距离

    所以 我有一个 numpy 字符串数组 我想使用此函数计算每对元素之间的成对编辑距离 scipy spatial distance pdist 来自http docs scipy org doc scipy 0 13 0 reference
  • 如何将应用程序命令绑定到视图模型(WPF)?

    我已经阅读了 Josh Smith 的有关使用 RelayCommand 绑定命令以查看模型的文章 但是 我需要将 ApplicationCommands Save 绑定到视图模型 以便当用户单击保存菜单项时它会在窗口中处理 这怎么可能 我
  • 了解 iOS 应用程序中使用的 MVC 模式

    我读过Apple的MVCarticle https developer apple com library ios documentation Cocoa Conceptual CocoaFundamentals CocoaDesignPa
  • 复制到 d3dtexture 的 FreeType2 字符显示为双字母

    我最近刚刚开始使用 FreeType 库 并开始尝试从缓冲区复制到 directx9 纹理 然而 尽管我是从通过加载单个字符创建的缓冲区复制的 但目前还是出现了双字母 尝试复制字符 a 以下是我当前的代码 void TexFont free
  • 数据库存在,但返回错误“未知数据库”

    我安装了WAMP服务器几个小时前进入我的Windows 10 64 bit电脑 我用了phpmyadmin创建一个名为 的数据库testdb 并尝试使用 php 文件连接到它 我确信我创建了数据库 但它返回此错误 Warning mysql
  • Ionic 3 RSS 使用 rss2json“不可处理的实体”读取

    我在使用 Ionic 3 的 rrs2json API 将 RSS 转换为 JSON 时遇到问题 如果我执行代码 则会出现错误 gt Response body status error message rss url参数为必填项 Stat
  • 如何过滤相关对象中的字段?

    如果我尝试过滤相关对象中的字段 则 Tastypie 将返回错误 例如 运行 curl H Accept application json http localhost 8080 wordgame api v1 rounds format
  • Xcode:请求打开应用程序失败

    在一切正常并运行项目之前的某个时候 但现在我遇到的问题是request to open App failed 有谁有办法解决这个问题以及为什么会出现这个问题 Cause 可能您之前在假设 iphone 6s Plus 上运行过不同的项目 并
  • 通过[名称]引用类似定理的环境

    我正在使用 ntheorem 来排版一组条件 在我的序言中我有 theoremstyle empty newtheorem Condtion Condtion 当我想排版一个条件时 我写 begin Condtion name label
  • 如何在 Android 中单击按钮时清除活动堆栈

    我有一个问题 我的应用程序中有一个注销按钮 我们在该按钮上调用了应用程序登录屏幕 但此时当用户按下 Android 手机的后退按钮时 他在没有身份验证的情况下再次进入应用程序 这是不可取的 我希望当我们单击 注销 按钮时 所有以前的活动堆栈
  • iPhone SDK如何实现自动对焦拍照?

    我正在创建一个应用程序 用户可以在其中拍摄带有文本的图像并上传到服务器 我用过AVCaptureSession打开相机并放置一个捕获最新帧并将其上传到服务器的栏按钮 在此应用程序中 用户可以通过单击栏按钮将多张图像一张一张地发送到服务器 我
  • 如何使用 jsoup 替换标签

    我想将所有图像标签替换为div标签 我可以选择所有标签 并且我知道我必须使用replaceWith 但我无法使用它 如果我使用TextNode替换为 div div 它转换成 amp lt div amp gt my div amp lt
  • 运行 python 多进程进行图像处理

    我有一个 python 函数 它接受图像路径并输出 true 或 false 具体取决于图像是否为黑色 我想在同一台机器上处理多个图像 如果其中一个不是黑色 则停止该过程 我在这里读了很多 python celery 等中的多处理 但我不知
  • 摄像头读取条码后自动检测并捕获条码

    我用过这个android vision 项目 https github com googlesamples android vision扫描条形码 当相机检测到条形码时 我目前需要手动点击以捕获它 但是 我想稍微更改一下代码 以便在检测到条
  • 为什么C++ STL映射容器的复杂度是O(log(n))?

    对于 C STL 容器 例如vector and list 查找元素并插入或删除它们的复杂性是不言而喻的 然而 对于map容器 尽管我从阅读中知道访问和插入复杂性 性能是 O log n 但我无法计算出why 我显然对地图的理解不够深入 因