大致介绍:

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交换一下就行了。

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

C++ STL rope介绍----可持久化平衡树的更多相关文章

  1. [rope大法好] STL里面的可持久化平衡树--rope

    简单用法: #include <ext/rope> using namespace __gnu_cxx; int a[1000]; rope<int> x; rope<i ...

  2. [cogs2314][HZOI 2015] Persistable Editor - 可持久化平衡树

    [cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p st ...

  3. 【LG3835】可持久化平衡树

    [LG3835]可持久化平衡树 题面 洛谷 解法一 参考文章 rope大法好 \(rope\)基本操作: #include<ext/rope> using namespace __gnu_ ...

  4. luoguP3835 [模板]可持久化平衡树

    https://www.luogu.org/problemnew/show/P3835 因为博主精力和实力有限,学不懂 fhq treap 了,因此只介绍 leafy tree 解法 leafy tr ...

  5. 可持久化Trie & 可持久化平衡树 专题练习

    [xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ...

  6. [Luogu 3835]【模板】可持久化平衡树

    Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作 ...

  7. 洛谷P3835 【模板】可持久化平衡树

    题目背景 本题为题目 普通平衡树 的可持久化加强版. 数据已经经过强化 感谢@Kelin 提供的一组hack数据 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作( ...

  8. P3835 【模板】可持久化平衡树

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的 ...

  9. STL 算法介绍

    STL 算法介绍 算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成.        <algorithm ...

随机推荐

  1. Unity 动画系统(Mecanim) 术语及翻译 表格

    原文 翻译 Animation Clip 视频片段 Avatar 阿凡达 Retargeting 重定向 Rigging 绑定 skinning 蒙皮 Animator Component 动画组件 ...

  2. 【Latex常见问题总结】

    1. 非数学符号如max/min将下标放到正下方,这个问题折腾了很久, 下标不在正下方会带俩两个问题,一是有时候不够美观,二是会使得数学公式过长越界,需要换行. 解决方案:将符号转换为数学符号, \m ...

  3. 使用Storyboard实现复杂界面

    http://blog.csdn.net/guchengluoye/article/details/7472771 http://wangjun.easymorse.com/?p=1564 http: ...

  4. [LeetCode] 242. 有效的字母异位词 valid-anagram(排序)

    注意这里字母异位词的定义是:字母类别及个数都要一样,只是排列顺序不同. class Solution(object): def isAnagram(self, s, t): ""& ...

  5. 2015 Multi-University Training Contest 7 hdu 5371 Hotaru's problem

    Hotaru's problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. BCB使用线程删除目录中的图片

    BCB新建线程DeleteImgThread类.其会默认继承Thread类,然后在Execute函数中编写代码, void __fastcall DeleteImgThread::Execute() ...

  7. ABAP FIELD-SYMBOLS 有大作用- 将没有可改參数的增强出口变得也能改主程序的值了

    看下图代码: report  z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form  和 function zbapi_test , 这两 ...

  8. hdoj 1013Digital Roots

     /*Digital Roots Problem Description The digital root of a positive integer is found by summing th ...

  9. Gym 100733J Summer Wars 题解:灵活运用扫描线的思想

    题意: 给你n个点,m个横着的线段.你能够横移这些线段,可是这些线段的相对位置不能改变.假设一个点,在它的正上方和和正下方都有线段(包含线段的终点).则这个点被视为被"屏蔽".问通 ...

  10. DB-MySQL:MySQL 运算符

    ylbtech-DB-MySQL:MySQL 运算符 MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运 ...