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

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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python 从入门到实战5(列表的其它操作)
  • Gazebo Harmonic gz-harmonic 和 ROS2 Jazzy 思考题 建图和导航 SLAM Navigation
  • 微信小程序知识点(一)
  • 视频压缩工具哪个好?无损压缩工具分享
  • C语言:基本数据类型 char, short int, int
  • java后端开发-Mybatis连接数据库步骤
  • k3s中使用GPU资源
  • CommonJS与ESModule标准
  • uni-app - - - - - 使用uview-plus详细步骤
  • 深度学习之 OpenCV 图像边缘检测算法解析及代码演示
  • 【mysql】mysql目录结构和源码和mysql基础练习
  • 008、架构_MDS
  • DNS解析:深入解析与实战应用
  • 【C语言】通讯录的实现(详解)
  • 网络技术基础
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Java精华积累:初学者都应该搞懂的问题
  • js操作时间(持续更新)
  • Otto开发初探——微服务依赖管理新利器
  • PAT A1120
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 包装类对象
  • 和 || 运算
  • 前端技术周刊 2019-01-14:客户端存储
  • 三分钟教你同步 Visual Studio Code 设置
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 携程小程序初体验
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #nginx配置案例
  • #pragma multi_compile #pragma shader_feature
  • (1)svelte 教程:hello world
  • (CPU/GPU)粒子继承贴图颜色发射
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)汇编语言——简单程序
  • .aanva
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net6使用Sejil可视化日志
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .NET实现之(自动更新)
  • @Autowired多个相同类型bean装配问题
  • @DataRedisTest测试redis从未如此丝滑
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题