拓展库——extc(平衡树)

平衡树常规操作

#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;
}

代码运行结果——思考俩个查找函数的作用

posted @ 2022-02-18 23:50  NUC_ACM开完刀  阅读(145)  评论(0编辑  收藏  举报