multiset底层原理,红黑树原理

简介: multiset底层原理,红黑树原理

multiset 底层实现原理

mulitiset 默认采用 less ,即由小到大的顺序排序

平衡二插搜索树

//AVL树
typedef struct TreeNode {
  struct TreeNode *parent;
  struct TreeNode *left;
  struct TreeNode *right;
  int key;  //维持有序
  int data;  //节点尔达斯信息
  //bool color 红黑树当中还具有color信息
} TreeNode;
void inorder (TreeNode *node) {
  if (node != nullptr) {
    inorder(node->left);
    printf("k:%d v:%d", node->key, node->data);
    inorder(node->right);
  }
}

STL中红黑树的实现

记录的信息:a. 根节点位置;b. 最左侧节点位置;c. 最右侧节点位置。迭代器采用中序遍历的方式进行遍历。

类比 set、multiset、map、multimap

  1. setmultiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复.
  2. mapmultimap将key和value组成的pair作为元素,根据key的排序准则自动将元素排序(因为红黑树也是二叉搜索树,所以map默认是按key排序的),map中元素的key不允许重复,multimap可以重复 。
#include <set>
#include <map>
#include <iostream>
using namespace std;
int main() {
  set<int> s;
  multiset<int> ms;
  map<int,int> m;
  multimap<int,int> mm;
  return 0;
}

充电站

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习


相关文章
|
druid Java 关系型数据库
【Java】Springboot整合多数据源配置
【Java】Springboot整合多数据源配置
1470 0
|
存储 安全 Java
OAuth2实现单点登录SSO完整教程,其实不难!(上)
OAuth2实现单点登录SSO完整教程,其实不难!
4545 1
OAuth2实现单点登录SSO完整教程,其实不难!(上)
|
9月前
|
缓存 边缘计算 网络协议
CDN加速网站的终极指南:关键策略与实战技巧
内容分发网络(CDN)是现代互联网基础设施的核心,通过全球分布式服务器网络加速内容交付。掌握CDN原理与实践,可显著提升网站速度、安全性和用户体验。本文详解CDN基础、优势、实施步骤及未来趋势,帮助您选择合适方案并优化配置,在数字时代中占据竞争优势。无论是高流量网站还是跨国企业,CDN都是不可或缺的技术工具。立即行动,让您的内容交付更高效!
|
Linux Windows Ubuntu
windows系统下FileZilla客户端 尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。 解决方案
windows系统下使用FileZilla连接linux(虚拟机系统)总是报错:尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。 个人使用的是最新版FileZilla:FileZilla-3.31.0。
11227 0
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
存储 Python
【可定制、转换时间戳】解析nc文件,并保存为csv文件
【可定制、转换时间戳】解析nc文件,并保存为csv文件
1067 4
高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法
高等数学II-知识点(1)——原函数的概念、不定积分、求原函数的两种常用方法 (凑微分法、第二换元法)、分部积分法、有理函数原函数求法、典型三角函数原函数求法
896 1
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
1154 0
|
算法 网络协议 Linux
探索Linux命令idn:处理国际化域名
`idn`命令在Linux中用于处理国际化域名,转换成ASCII兼容的ACE格式或反之。它支持Punycode算法,提供命令行接口及多种参数,如`-a`转ASCII,`-d`转回国际化域名。示例包括将`xn--zhonggu-wu9d.com`转换。使用时注意有效输入,考虑版本兼容性,并可与其他工具结合使用。
361 10