• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++STLrope介绍----可持久化平衡树

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

大致介绍:

rope这个东西,我刚刚知道这玩意,用的不是很多,做个简单的介绍。

官方说明:我是刘邦(我估计你是看不懂的)。

rope就是一个用可持久化平衡树实现的“重型”string(然而它也可以保存int或其他的类型),它不是标准STL里的东西,属于STL扩展。

crope即rope<char>,就是一个“重型”string,且可以用cin/cout直接输入输出。

速度么,我并不知道,应该还可以,不过应该没有手写的快。

比赛的话,我不大清楚,据我所知Cena是不支持的。然而如果你会写可持久化平衡树,还用这个干什么?

具体操作:

它的定义在#include<ext/rope>中,需要using namespace __gnu_cxx。

例如:

#include<ext/rope>
using namespace __gnu_cxx;
rope<int> *f[10000];
int main(){}

如何让它“可持久化”呢?

f[i]=new rope<int>(*f[i-1]);

 这样做可以用O(1)的时间得到它的历史版本,就做到了可持久化。

rope的基本操作有:

x.length()/x.size() 返回x的大小
x.push_back(s) 在末尾添加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交换一下就行了。

然而我知道的只有这么点了,如果您觉得有什么不足,可以告诉我。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++面经常见题发布时间:2022-07-13
下一篇:
DLL导出封装类linuxC++共享库导出类发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap