[Happy DSA] rope算法学习
来源:互联网 发布:linux根目录是什么 编辑:程序博客网 时间:2024/06/08 11:11
rope是粗绳索的意思,在计算机编程世界里,它可以替代string来处理超长字符串的相关操作,比如联接,插入,删除,因此它常用于text editor这样的应用中。
它的wiki主页简要描述了它的机理:
这个算法来源于一篇paper: Boehm, Hans-J; Atkinson, Russ; and Plass, Michael (December 1995).Ropes: an Alternative to Strings
它的大部分接口的实现复杂为O(log(n)) (algorithmic)级别。即使这样,相对于简单的指针和长度构成的模型来说,实现这样的数据结构复杂度相当大。
SGI STL很早就实现了rope结构,但是它不属于STL C++标准,所以在GCC中,程序如果要用这样的结构体,需要[cci]#include <ext/rope>[/cci],接口类似于std::vector接口:rope<char, gnu_allocator<type> >。像std::string一样,它本身就是一个类模板,已经提供了crope和wrope实例化版本供使用。
阅读采用的SGI STL版本是STL-3.3。主要包含2个文件:stl_rope.h和ropeimpl.h,后者被前者include。对外头文件是rope。大部分的类定义都在stl_rope.h中,ropeimpl.h实现了所有未被实现在stl_rope.h中的函数。rope实现相当复杂,涉及到的类相当多。
它的wiki主页简要描述了它的机理:
这个算法来源于一篇paper: Boehm, Hans-J; Atkinson, Russ; and Plass, Michael (December 1995).Ropes: an Alternative to Strings
它的大部分接口的实现复杂为O(log(n)) (algorithmic)级别。即使这样,相对于简单的指针和长度构成的模型来说,实现这样的数据结构复杂度相当大。
SGI STL很早就实现了rope结构,但是它不属于STL C++标准,所以在GCC中,程序如果要用这样的结构体,需要[cci]#include <ext/rope>[/cci],接口类似于std::vector接口:rope<char, gnu_allocator<type> >。像std::string一样,它本身就是一个类模板,已经提供了crope和wrope实例化版本供使用。
阅读采用的SGI STL版本是STL-3.3。主要包含2个文件:stl_rope.h和ropeimpl.h,后者被前者include。对外头文件是rope。大部分的类定义都在stl_rope.h中,ropeimpl.h实现了所有未被实现在stl_rope.h中的函数。rope实现相当复杂,涉及到的类相当多。
- [Happy DSA] rope算法学习
- openssl DSA 算法学习
- [Happy DSA] 图像的contour trace算法C++实现
- [Happy DSA] 2个浮点数的最大公约数的算法小结
- [Happy DSA] 求解最长回文子字符串
- Leetcode算法学习日志-202 Happy Number
- DSA算法研究
- 加密算法: DSA算法
- 加密算法: DSA算法
- 数字签名算法DSA
- 加密解密---------->DSA算法
- DSA算法原理
- dsa算法(1)
- dsa算法(2)
- dsa算法(3)
- dsa算法(4)
- dsa算法(5)
- dsa算法(6)
- Actionscript3 文件上传组件制作
- Qsys学习笔记2
- jquery ---- getXml文件(遍历显示其中某个节点下的内容)
- Extjs-Flash报表 饼状图
- glib中GTrashStack小计
- [Happy DSA] rope算法学习
- html a target
- javascript正则表达式之$1...$9
- linux 下route命令
- cocos2d-x 动作效果代码集锦
- Swing在进行LookAndFeel切换时异常的解决方法
- [Happy GLIB] glib的slab算法实现学习
- Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数 转载
- Polya入门