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等技术内容,立即学习

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐