我想知道在什么情况下你会在另一个STL容器上使用绳子?
绳子是一根可伸缩的绳子
实施:它们是为
高效运作涉及
字符串作为一个整体。操作如
赋值、串联和
子字符串花费的时间几乎是
与长度无关
细绳。与 C 弦不同,绳索是
非常合理的代表
长字符串,例如编辑缓冲区或
邮件消息。
优点:
更快的串联和
涉及长的子串操作
字符串。在中插入一个字符
10兆字节绳子的中间应该
大约为 10 秒
微秒,即使是副本
保留原件,例如作为一个
编辑历史记录。相比之下,这将
采取一秒钟的顺序
传统的“扁平”字符串
表示。所需时间为
连接可以被视为
对于大多数应用来说是常数。这是
使用绳子作为完全合理的
a 中文件的表示
文本编辑器。
可能有更好的空间
表现。稍作修改
绳子可以与共享内存
原来的。绳索被分配在小
块,显着减少内存
引入的碎片问题
大块
赋值只是一个(可能
引用计数)指针赋值。
与引用计数的写时复制不同
实施,这在很大程度上仍然是
即使其中一份副本为真
随后稍作修改。这是
老检查站非常便宜
字符串的版本,例如在编辑中
历史。
可以查看一个函数
将角色制作成绳子。因此一个
一根绳子可能有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(使用前将#替换为@)