技术分享
🥸map&set容器的模拟实现和封装
00 min
2021-7-2
2024-11-23
type
status
summary
date
slug
tags
category
icon
password
📌
前言:在我们的印象中其实set就是实现了一个key的容器,而map就是实现了key-value的一个容器,但是其实他们都是用的同一棵树-rb_tree
1.其实map和set都是应用的key-value的rb_tree,但是map和set略有不同
对于set的template是这样定义的-<k,k>对于map的template是这样定义的-<k,pair<k,v>>,由这样才能实现了map是key-value的容器,set是key的一个容器
仿函数是一种重载了函数调用运算符operator()的一种对象或者类,这可以使的对象或者类可以像函数那样被调用,仿函数既可以是一个普通的函数指针也可以是一个重载了operator()的对象或者类,既可以像函数那样被调用也能携带一些信息,这是普通函数所不能做到的
这里设计出来的这一颗红黑树,既适用于map也适用于set取决于你传入进入的值是pair<key,value>还是key
 
 
接下来我们就要设计一棵红黑树来适配于set和map

…暂时不想写map和set的封装了

就是要继续实现各种内置成语函数和迭代器等等需要封装
其实map的insert函数就是红黑树的insert,就是在map中定义一个insert函数,map中是实例化一个红黑树实例,然后在map的insert中调用红黑树的insert
上一篇
手撕红黑树
下一篇
哈希(Hash)