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