rope的用法
听说内部的实现是块状链表。。
一些用法:
#include <ext/rope>
using namespace __gnu_cxx;
rope<int> *rp, r;
int a[102], n, x, pos;
// 两种构造方法
rp = new rope<int>(a, a + n + 1);
rp = new rope<int>(*rp);
rp->at(x); //访问pos为x的数
r[x]; //同上
rp->push_back(x); //尾部增加
rp->append(x);
rp->append(a);
rp->append(a, n);
rp->insert(pos, a); //在pos处将数组a插入(pos处原来的数在插入数组之后)
rp->insert(pos, x); //在pos处将数x插入
rp->insert(pos, a, n); //在pos处将数组a的前n个插入
rp->erase(pos); //未知作用。。至少不像字面意思
rp->erase(pos, x); //在pos处开始删除x个
rp->replace(pos, x); //把pos处的数换成x
rp->replace(pos, a); //把pos处的数换成数组a(会改变总长)
rp->replace(pos, a, n); //把pos处的数换成数组a的前n个数
rp->repalce(pos, n, a); //把pos处开始的n个数替换为数组a
rp->replace(pos, n, a, n); //把pos处开始的n个数替换为a的前n个数(两个n当然可以不一样)
//对于insert和replace中不加长度修饰的数组,会默认到0停止。
r = rp->substr(pos, x); //获取在pos开始处长度为x的子串
rp->copy(pos, n, a); //将pos开始处n个数拷入a中
一些例题