当前位置: 首页 > article >正文

pbds库

内容参考:比STL还STL?——平板电视

实测CF上需要开C++23才能通过编译

文章目录

    • 头文件
    • hash 哈希表
    • tree 平衡树
    • trie 字典树
    • priority_queue 优先队列

头文件

万能

#include<bits/extc++.h>
using namespace __gnu_pbds;

分类

#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/priority_queue.hpp>//用priority_queue
using namespace __gnu_pbds;

hash 哈希表

定义

gp_hash_table<type, type> h;

用法和 map 一样,总时间复杂度 O ( n ) O(n) O(n)

tree 平衡树

定义

tree<PII, null_type, less<PII>, rb_tree_tag, tree_order_statistics_node_update> tr;

其中 PII 表示存储类型,less<PII> 表示从小到大排序,tree_order_statistics_node_update 表示更新方式

支持操作 复杂度均为 O ( l o g n ) O(logn) O(logn)

  • insert(make_pair(x, y)) 插入
  • erase(make_pari(x, y)) 删除
  • order_of_key(PII(x, y)) 求排名
  • find_by_order(k) 找第k小值,返回迭代器
  • join(b) 将 b 并入原平衡树,要保证两棵树类型一样,没有重复元素
  • split(v, b) 分裂,小于等于v的属于原平衡树,其余属于 b
  • lower_bound(x) 返回第一个大于等于 x 的元素迭代器
  • upper_bound(x) 返回第一个大于 x 的元素迭代器

trie 字典树

略 直接用数组实现吧

priority_queue 优先队列

定义

priority_queue<int, greater<int>, pairing_help_tag> Q; //小根堆,大根堆写less<int>

支持操作和普通优先队列差不多,不同点:

  • join(b) 合并两个优先队列
  • modify(it, 6) 修改元素

时间复杂度,push 和 join 都是 O ( 1 ) O(1) O(1) ,其余 O ( l o g n ) O(logn) O(logn)


http://www.kler.cn/a/287695.html

相关文章:

  • C语言剖析:srand()/rand()/time()
  • PCB+SMT线上报价系统+PCB生产ERP系统自动化拼板模块升级
  • stdin文件流指针
  • 走进嵌入式开发世界
  • 活着就好20241118
  • 【Node.js】使用 Node.js 需要了解多少 JavaScript?
  • App使用Job定时器不准时的原因分析
  • Java项目中的分库分表实践指南
  • 前端学习Day36
  • 【设计模式之原型模式——矩形原型】
  • Spring 事务 数据库连接获取和释放原理
  • 网络安全的历史
  • 基于my Batis优化图书管理系统(总)
  • 通用后台管理系统实战演示(Vue3 + element-plus)汇总篇二
  • 设计模式之生成器方法
  • css揭秘 7 结构与布局
  • Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
  • 使用API有效率地管理Dynadot域名,添加账户中的联系人信息
  • Java中Object的常用方法
  • 专利复现_基于ngboost和SHAP值可解释预测方法
  • 【html】新建一个html并且在浏览器运行
  • 零域(微隔离)详述
  • docker4
  • ios 企业签名证书购买_iOS苹果企业签名须知
  • Spring源码浅析の循环依赖
  • 泰山派的小手机后续(2)