代码之家  ›  专栏  ›  技术社区  ›  Konrad

钢绞线-何时何地使用

  •  30
  • Konrad  · 技术社区  · 16 年前

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

    5 回复  |  直到 8 年前
        1
  •  39
  •   Amber    8 年前

    绳索是可伸缩的绳子 实施:它们是为 涉及到 串成一个整体。操作,如 赋值、串联和 子字符串花费的时间接近 独立于 字符串。不同于C弦,绳子是 非常合理的陈述 长字符串,如编辑缓冲区或 邮件消息。

    优势 :

    1. 更快的连接和 涉及long的子字符串操作 串。在中插入字符 一根10兆字节的绳子中间应该 接受10秒的命令 微秒,即使是 保留原件,例如作为 编辑历史。相反,这会 接受一秒钟的命令 传统“扁平”管柱 代表。所需时间 连接可以看作 大多数应用程序都是常量。它是 使用绳子作为 文件在 文本编辑器。

    2. 潜在的更好的空间 性能。A的细微修改 绳子可以与共享内存 原创。绳索的配置很小 块,显著减少内存 碎片问题 大块

    3. 任务只是一个(可能 引用计数)指针分配。 与引用不同的是,写入时拷贝计数 实现,这在很大程度上仍然存在 即使其中一份是 随后略有修改。它是 老检查站很便宜 字符串的版本,例如在编辑中 历史。

    4. 可以查看函数 以绳子的形式产生人物。因此A 一根绳子可以是100兆字节。 文件,只有当 检查字符串的部分。 将字符串连接到 这样的文件不涉及阅读 文件。(目前 该设施的实施是 不完整的。)

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

        2
  •  7
  •   Marcelo Cantos    16 年前

    它是一个非标准的替代品 string 处理大数据量的。见 here 它的工作原理。

        3
  •  3
  •   unixman83    14 年前

    绳子唯一的坏处是线和误用。

    在Linux(可能是大多数其他操作系统)下,据说线程安全代码使得ropes速度慢得多。所以我就把代码撕掉(为 断线 ,因为我在嵌入式平台中使用了一个线程。

    否则,rope比string快得多,在大缓冲区内存不足的可能性更小,编辑大缓冲区的速度也更快,比如在圣经中间删除一个坏字符。

    这是因为绳索被解释为数据的方式。作为许多较小的“字符串”,通过链接列表链接在一起以生成最终的字符串。

        4
  •  2
  •   anon    16 年前

    我根本不会使用它,但那是因为我有点“易于携带”的怪胎,而且往往只使用BOG标准容器。绳子是SGI的STL实现的一部分,并不是C++标准的一部分。

        5
  •  2
  •   Evgeni Sergeev    10 年前

    这里非常强调由字符组成的字符串,但rope只是一个1d序列,具有快速插入和删除(序列中的任何位置)。

    这似乎有点令人惊讶,这样一个基本的能力很少需要任何东西(字符串除外)。我在哪里使用整数的绳子?我不知道,因为操纵它需要索引来自某个地方。

    最好的实际例子是,我正在创建一个用户界面,让用户查看由数千个图像组成的数据集,用户需要能够删除其中的一些图像并重新排列其他图像的顺序。