rope

头文件与命名空间:

#include<ext/rope>
using namespace __gnu_cxx;

大概可以称作可持久化平衡树,因为rope适用于大量、冗长的串操作,而不适合单个字符操作。rope类似块状链表。复杂度为

基本操作:

1)运算符:rope支持operator += -= + - < ==。

2)输入输出:可以用<<运算符由输入输出流读入或输出。

3)长度/大小:调用length(),size()都可以。

4)插入/添加等:

push_back(x);//在末尾添加x
insert(pos,x);//在pos插入x,自然支持整个char数组的一次插入
erase(pos,x);//从pos开始删除x个
copy(pos,len,x);//从pos开始到pos+len为止用x代替
replace(pos,x);//从pos开始换成x
substr(pos,x);//提取pos开始x个
at(x)/[x];//访问第x个元素
rope<int>r

放在主函数外面会快一点。

hash table

头文件与命名空间:

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace __gnu_pbds;

cc_hash_table是拉链法

gp_hash_table是查探法

gp_hash_table更快,一般用这个。

声明方式:

cc_hash_table<int,bool>h;
gp_hash_table<int,bool>h;

除了当数组用外,还支持clear、find和operator[]。

这个也得放在主函数外面。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

奇技淫巧 Previous
南京网络赛I (Manacher+哈希)/回文树 Next