STL 绳索 - 何时何地使用

2024-04-12

我想知道在什么情况下你会在另一个STL容器上使用绳子?


绳子是一根可伸缩的绳子 实施:它们是为 高效运作涉及 字符串作为一个整体。操作如 赋值、串联和 子字符串花费的时间几乎是 与长度无关 细绳。与 C 弦不同,绳索是 非常合理的代表 长字符串,例如编辑缓冲区或 邮件消息。

优点:

  1. 更快的串联和 涉及长的子串操作 字符串。在中插入一个字符 10兆字节绳子的中间应该 大约为 10 秒 微秒,即使是副本 保留原件,例如作为一个 编辑历史记录。相比之下,这将 采取一秒钟的顺序 传统的“扁平”字符串 表示。所需时间为 连接可以被视为 对于大多数应用来说是常数。这是 使用绳子作为完全合理的 a 中文件的表示 文本编辑器。

  2. 可能有更好的空间 表现。稍作修改 绳子可以与共享内存 原来的。绳索被分配在小 块,显着减少内存 引入的碎片问题 大块

  3. 赋值只是一个(可能 引用计数)指针赋值。 与引用计数的写时复制不同 实施,这在很大程度上仍然是 即使其中一份副本为真 随后稍作修改。这是 老检查站非常便宜 字符串的版本,例如在编辑中 历史。

  4. 可以查看一个函数 将角色制作成绳子。因此一个 一根绳子可能有100MByte 文件,只有在该情况下才是只读的 检查字符串的一部分。 将字符串连接到末尾 这样的文件不涉及读取 文件。 (目前 该设施的实施是 不完整。)

https://wayback.archive.org/web/20130102093702/https://www.sgi.com/tech/stl/Rope.html https://wayback.archive.org/web/20130102093702/https://www.sgi.com/tech/stl/Rope.html

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

STL 绳索 - 何时何地使用 的相关文章

  • 如何以编程方式将访问键(快捷方式)添加到 WPF ContextMenu?

    我已经有以下内容 var myContextMenu new System Windows Controls ContextMenu var exitItem new MenuItem exitItem Header E xit exitI
  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 展开 std::reference_wrapper 的成本

    Given include
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 使用任务的经典永无止境的线程循环?

    给出了一个非常常见的线程场景 宣言 private Thread thread private bool isRunning false Start thread new Thread gt NeverEndingProc thread S
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac

随机推荐

  • 使用 Pickle 保存 Numpy 数组

    我有一个 Numpy 数组 我想保存它 130 000 x 3 我想使用 Pickle 保存它 代码如下 但是 我在 pkl load 行不断收到错误 EOFError Ran out of input 或 UnsupportedOpera
  • 如何在下拉框下方的Select2中显示选中的标签?

    我正在使用带有标签的 Select2 版本 4 并且希望将所选选项显示在输入字段下方 所以而不是 而是有 这可能吗 如果可能的话我该如何实现 编辑 代码是
  • W.r.t.从 Gradle 将选项传递给 JPAAnnotationProcessor

    我正在使用 Gradle 版本 2 14 我做了一些更改build gradle排除包JPAAnnotationProcessor如中提到的question https stackoverflow com questions 2591866
  • 使图标在 React Native 中可供选择,而不是通过 props 发送它们

    我有 svg 图标 这些是 a a b b
  • 如何优化递归算法使其不重复?

    找到后difflib SequenceMatcher由于 Python 标准库中的 class 不适合我的需求 因此编写了一个通用的 diff 模块来解决问题空间 经过几个月的时间更多地思考它在做什么之后 递归算法似乎通过按单独的 搜索线程
  • 使用 pyttsx3 模块向语句添加语音时出现“VoiceAge”错误

    我基本上是在聊天机器人的帮助下开发一个聊天机器人 现在为了向机器人给出的响应添加语音 我使用了 pyttsx3 模块 但最终结果是这样的 我什至尝试将这个模块实现为其他声音 因为它显示有 3 个声音可用 engine pp init voi
  • 将 numpy.array 对象转换为 PIL 图像对象

    我一直在尝试使用 Image fromarray 将 numpy 数组转换为 PIL 图像 但它显示以下错误 回溯 最近一次调用最后一次 文件 C Users Shri1008 Saurav Das AppData Local Progra
  • 自动启用从 Internet 访问端口 4900 的方法

    我正在编写一个在端口 4900 上运行的自定义 p2p 程序 在某些情况下 当用户位于路由器后面时 无法从互联网访问该端口 是否有一种自动方式可以从互联网访问该端口 我不太确定其他 p2p 应用程序是如何工作的 有人能解释一下吗 简而言之
  • C++ 类,其基类和循环包含 [重复]

    这个问题在这里已经有答案了 文件 1 foo h ifndef FOO H define FOO H include baseclass h include bar h class Bar class Foo public baseclas
  • 如何让 div 在滚动到屏幕顶部后粘在屏幕顶部?

    我想创建一个 div 它位于内容块下方 但是一旦页面滚动到足以接触其顶部边界 它就会固定在适当的位置并随页面滚动 您可以简单地使用 css 将元素定位为fixed https developer mozilla org en US docs
  • 在 mongoDB 中的同一 API 中并行查询同一文档

    我有一个用打字稿编写的 API 我尝试使用 Promise allsettled 对同一文档运行并行查询 但它的性能更差 我猜它们是按顺序运行的 有没有办法在 mongoDB 的同一连接中对同一文档执行并行查询 这是代码 console t
  • 绑定值未传递给 WPF 中的用户控件

    我仔细观察了很久 却被困住了 我试图通过 Window 的绑定将参数从 Window 传递到 UserControl1 在 MainWindow 中 UserControl1 被包含两次 一次通过 MyValue 上的绑定传递参数 MyCu
  • 如何使用 jpa 规范添加不同的属性进行查询

    我正在使用 jhipster 标准和 jpa 规范来实现研究端点 嗯 它正在工作 但请继续向我发送副本 此型号有前置 public class Prestation extends AbstractAuditingEntity implem
  • 删除字符串开头和结尾的换行符

    我注意到 trim 不会从字符串的开头和结尾删除换行符 因此我尝试使用以下正则表达式来完成此操作 return str replace s n s n g 这并没有删除新的线条 我担心我已经超出了我的能力范围 EDIT字符串是用 ejs 生
  • 使用 jQuery 实现打字机效果

    编辑 我并没有真正问我原来问题中应该问的所有问题 为了帮助寻找类似答案的人更容易找到答案 问题最终是这样的 如何制作带有闪烁光标的打字机效果 该光标在语句末尾暂停 擦除语句并写入新语句 看看下面 Yoshi 的回答 它正是这样做的 demo
  • Android jetpack 导航组件对话框结果

    到目前为止 我仅使用导航组件即可成功导航到对话框并返回 问题是 我必须在对话框中执行一些操作并将结果返回到调用对话框的片段 一种方法是使用共享视图模型 但为此我必须使用 of activity 这会让我的应用程序有一个单例占用内存 即使我不
  • 如何在图像视图上画一个圆圈

    如何在用户触摸图像的位置在图像上绘制一个圆圈 图像是使用imageview设置的 我在网上找到了一种解决方案 它在新画布上创建图像位图并在其上绘制圆圈 解决方案位于http joerg richter fuyosoft com p 120
  • 将您的 Web 应用程序发布到野外

    假设您已经编写了下一个社交网络现象 或任何其他网络应用程序 您已选择 Java Tomcat Apache 和 Oracle 或您喜欢的任何设置 您知道希望将其发布到网络上并让人们注册并开始使用它 对于您在家中编写并希望将其传播到野外的东西
  • 比较两个数据表并选择第二个表中不存在的行

    我有两个数据表 我想从第一个数据表中选择第二个数据表中不存在的行 例如 Table A id column 1 data1 2 data2 3 data3 4 data4 Table B id column 1 data10 3 data3
  • STL 绳索 - 何时何地使用

    我想知道在什么情况下你会在另一个STL容器上使用绳子 绳子是一根可伸缩的绳子 实施 它们是为 高效运作涉及 字符串作为一个整体 操作如 赋值 串联和 子字符串花费的时间几乎是 与长度无关 细绳 与 C 弦不同 绳索是 非常合理的代表 长字符