multiset底层原理,红黑树原理
multiset充电站推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习...
·
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
set
和multiset
会根据特定的排序准则自动将元素排序,set
中元素不允许重复,multiset
可以重复.map
和multimap
将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等技术内容,立即学习
更多推荐
已为社区贡献4条内容
所有评论(0)