STL中的rope模板(可持久化平衡树)

首先这玩意需要的预编译指令和用的命名空间有点特别

#include
using namespace __gnu_cxx;

支持的操作:

rope list;
list.insert(p,str)  //在p的位置插入str
list.erase(p,c)  //删除list的从p开始的c个节点
list.substr(p,c)  //提取list的p位置开始的c个节点
list.copy(p,c,str)  //将list的p位置开始的c个节点复制给str
list.replace(pos,x)//从pos开始替换成x

此外它可以用于实现可持久化操作,他可以实现O(1)的copy历史版本,因为rope的底层是平衡树实现,所以copy时只需copy根指针。
多数时候定义rope用指针(方便可持久化)像是这样:c[i]=new rope(*c[i-1]);

你可能感兴趣的:(技巧-STL使用,可持久化数据结构)