STL的可持久化数组

rope是一种可持久化数组,可持久化平衡树,采用块状链表实现

#include<ext/rope> 
using namespace __gnu_cxx;
rope<int>a;

rope就是一个用可持久化平衡树实现的“重型”string

库中模板计算基本和string一样简单
各种操作的复杂度都是O(log n)
rope的基本操作有:

x.length()/x.size() 返回x的大小
x.push_back(s) 在末尾添加s
x.push_front(n) 在开头添加s
x.insert(pos,s) 在pos位置插入s
x.erase(pos,x)  从pos位置开始删除x个
x.replace(pos,s) 将位置为pos的元素换成s
x.substr(pos,x) 从pos位置开始提取x个元素
x.copy(pos,x,s) 将从pos位置开始x个元素提取到s中
x.at(x)/[x]访问第x个元素
如果需要翻转平衡树,就维护一正一反两个rope,翻转就把两个rope交换一下就行了。

但是,rope是一种非标准的STL函数,也就是说不是所有OJ都支持

全部评论

相关推荐

程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务