rope是stl封装好的可持久平衡树(不支持kth)。
基本操作(函数)比较少。
下标从0开始。
{1,2,5,4}.insert(1,10)=>{1,10,2,5,4}

#include<ext/rope>///头文件
using namespace __gnu_cxx;
rope <int> x;
int main(){x.push_back(x); //在末尾加xx.insert(pos, x); //在pos位置加入xx.erase(pos, x); //从pos位置删除x个元素x.copy(pos, len, x); //从pos开始len个元素用x代替x.replace(pos, x); //从pos开始全部换为xx.substr(pos, x); //提取pos开始x个元素x.at(i);x[i]; //访问第x个元素return 0;
}

1.

rope< int>相当于一个块状链表。可以用substr等函数实现区间处理。引用一下别人的代码:

#include<bits/stdc++.h>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int N = 100005;int main()
{int n,m;while(~scanf("%d %d",&n,&m)){rope<int> str;for(int i = 0;i < n;++i)str.push_back(i + 1);for(int i = 0;i < m;++i){int a,b;scanf("%d %d",&a,&b);str = str.substr(a - 1,b) + str.substr(0,a - 1) + str.substr(a + b - 1,n - a - b + 1);//好像是根号复杂度}for(int i = 0;i < n;++i){if(i == n - 1){printf("%d\n",str[i]);}else{printf("%d ",str[i]);}}}return 0;
}

也可以去水 文本编辑器 那题。

2.

如果是rope< char>,相当于一个重型string。可以cout;可以+=。

3.

最大的特点是支持可持久化。
rope可以o(1)继承上一个版本。(内部维护了平衡树的指针)
写法如下:s[i]=new auto(*s[i-1]);
用于模拟可持久栈:
可持久化栈

#include <bits/stdc++.h>
#include <ext/rope>
using namespace std;
using namespace __gnu_cxx;
//-----pre_def----
const double PI = acos(-1.0);
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define fir(i, a, b) for (int i = (a); i <= (b); i++)
#define rif(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'
#define init_h memset(h, -1, sizeof h), idx = 0;
#define lowbit(x) x &(-x)//---------------
const int N = 8e4 + 10;
rope<int> *s[N];
void init() {}
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);int StartTime = clock();
#endifs[0] = new rope<int>(-1);int m, x;char op[5];scanf("%d", &m);fir(i, 1, m){s[i] = new auto(*s[i - 1]);scanf("%s", op);if (*op != 's')scanf("%d", &x);elses[i]->pop_back();if (*op == 'a')s[i]->push_back(x);if (*op == 't')s[i] = s[x - 1];printf("%d\n", s[i]->at(s[i]->size() - 1));}
#ifndef ONLINE_JUDGEprintf("Run_Time = %d ms\n", clock() - StartTime);
#endifreturn 0;
}

参考:Ryan_<

c++ STL rope小结相关推荐

  1. 块状链表(STL rope)

    块状链表(STL rope) 首先介绍一下块状链表. 我们都知道: 数组 具有 O(1)的查询时间,O(N)的删除,O(N)的插入. 链表 具有 O(N)的查询时间,O(1)的删除,O(1)的插入. ...

  2. 【Rope大法好】【STL中丧心病狂的可持久化平衡树】

    曾经我不会写平衡树--于是在STL中乱翻--学到了pb_ds库中的SXBK的斐波那契堆.支持kth的set,和--ext/rope 先发一个官方的 说明 (鸣谢maoxiaohan1999): htt ...

  3. STL - bitset

    STL - bitset 小结 声明: #include <bitset> using std::bitset; 申请对象以及初始化: bitset<n> b; b有n位,每位 ...

  4. [STL]六大组件介绍(目录 全)

    一般介绍 STL(Standard TemplateLibrary),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中, ...

  5. 一些鲜为人知却非常实用的数据结构 - Haippy

    原文:http://www.udpwork.com/item/9932.html 作为程序猿(媛),你必须熟知一些常见的数据结构,比如栈.队列.字符串.链表.二叉树.哈希,但是除了这些常见的数据结构以 ...

  6. 《C++性能优化指南》 linux版代码及原理解读 第四章

    目录 概述 为什么字符串很麻烦 字符串是动态分配的 字符串赋值背后的操作 如何面对字符串会进行大量复制 写时复制COW(copy on write) 尝试优化字符串 避免临时字符串 通过预留存储空间减 ...

  7. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  8. 判断出栈顺序是否正确

    先说一下题目: 假设有一个栈S,每次我们可以把序列A(含N个元素)中的第一个元素移入栈S,也可以是从栈顶弹出一个元素放入出栈序列B.这 样,经过N次入栈和出栈操作后,我们可以得到一个出栈序列B. 现在 ...

  9. 视觉SLAM十四讲笔记 -- 第一讲

    ​ 第一讲:课后习题 有线性方程 Ax = b,若已知 A,b,需要求解x,该如何求解? 这对 A 和 b 有哪些要求? [提示:从A的维度和秩角度来分析] 答:可以利用大学时候学的非齐次方程组的方法 ...

最新文章

  1. 物联网时代传感器厂商竞争格局揭秘
  2. Centos rescue 模式
  3. Linux系统开机自启流程
  4. Druid Spring JDBC Servlet 实现登录功能
  5. 【操作系统】独立进程与协作进程
  6. 第五节:video标签的特性,你全都掌握了吗?
  7. spark 写本地文件_(纯干货建议收藏)一次GC引发的Spark调优大全
  8. 【面试准备·2】webpack
  9. Cron表达式的正则表达式
  10. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
  11. Win10安装和配置IIS web服务器环境来运行ASP(动态服务器页面)脚本
  12. kb2999226此更新不适用你的计算机,Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机...
  13. 【计网】2.2.4 Web缓存/代理服务器
  14. 怎么知道是否已经被好友删了微信?
  15. 曾善美一女大学生的创业之路
  16. PHP时间戳与日期的相互转换
  17. 【UOJ #62】【UR #5】怎样跑得更快(莫比乌斯反演)
  18. 谷歌手机pixel4 夜景_如何在Google Pixel手机上使用实时字幕
  19. Linux 解压tar.gz并安装
  20. Java学习总结2---Java集合类

热门文章

  1. python源程序执行的方式有哪些_python源程序执行的方式有什么
  2. graphical GUI
  3. 毕业五年,从月薪3K到年薪50W+,需要掌握哪些核心技能?(c/c++研发岗)
  4. Linkerd部署模式
  5. 云呐|固定资产应该如何管理?固定资产应该怎么管理?
  6. html5桌面录制,前端使用html5、ffmpeg实现录屏摄像等功能
  7. 【交通建模】基于模型的自主交通仿真框架附matlab代码
  8. 北京小学几年级开始学计算机,小学入学年龄到底几岁合适?北京市教委最新回应是这样的...
  9. Nessus官网资料
  10. 万物皆可集成系列:低代码释放用友U8+深度价值(3)— 数据融合应用