平衡树常规操作
#include<bits/extc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>//tree
#include<ext/pb_ds/hash_policy.hpp>//hash表
#include<ext/pb_ds/trie_policy.hpp>//trie树
#include<ext/pb_ds/list_update_policy.hpp>
#include<iostream>
using namespace std;
using namespace __gnu_pbds;//平衡树命名空间
//可以直接写平衡树的命名空间或者是在每个定义结构操作前都加上__gnu_pbds::直接来调用此空间
//namespace 命名空间
//using namespace 使用命名的空间
namespace mySpare{
const int N = 2333;
void getN(){
cout << N << " 你好坏" << endl;
}
}
int main()
{
tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> RBtree1, RBtree;
//不可以插入重复元素,可以把数据类型用为PII,或者是double输出使用强制类型转换
for ( int i = 1; i <= 100; i ++ ) RBtree.insert(i);
for ( int i = 101; i <= 200; i ++ ) RBtree1.insert(i);
RBtree.erase(20);//删除一个树中的数据
RBtree.join(RBtree1);//将树RBtree1插入RBtree中,要求合并的俩个集合不能有重复元素
cout << *RBtree.find_by_order(1) << endl;//返回集合中的第k小的值(从第0小开始)
cout << RBtree.order_of_key(1) << endl;//查询一个数在集合中的排名(从第0小开始)
cc_hash_table<int, int> hash;//拉链
gp_hash_table<int, int> hash1;//开放寻址
mySpare::getN();//::是域解析运算符
return 0;
}
代码运行结果——思考俩个查找函数的作用