简易版tinySTL
文章平均质量分 89
落叶随峰
菜鸡大学生一枚,感兴趣方向:C++,嵌入式,PCB设计,目标检测,视频语义分割等。
展开
-
【简易版tinySTL】 红黑树-删除
在STL中,我们常分为 RL+RR、LR+LL两组,因为RR和LR后面的步骤都是一样的,RL和RR后面的步骤都是一样的。如下图所示,我们要删除一个15,实际上是找15的右子树上,最小值(17),替换15,实际上,就是删除17。此时原来的17就变成了双黑结点,此时兄弟结点是红色(34)判断是RR类型还是RL类型,这是因为二者的变色规则不一样。兄父变色,朝双黑方向旋转,保持双黑继续调整。则兄父变色:23变成红色,34变成黑色。在上述代码中,我们使用一个布尔变量。因为双黑结点在左边,我们将进行左旋。原创 2024-07-11 10:13:22 · 294 阅读 · 1 评论 -
【简易版tinySTL】 红黑树- 定义, 插入, 构建
对于一个平衡二叉搜索树,左子树高度为4,右子树高度为2,它们的高度差为2,破坏了平衡性(高度差<2才算平衡,因此需要调整二叉树使其平衡)当结点14右旋时,由于有右子树17,会和结点9冲突,阻碍旋转,我们需要将"冲突的右孩变左孩",即将结点9连在被旋转点14的左孩子上。当结点5左旋时,由于有左子树3,会和结点6冲突,阻碍旋转,我们需要将"冲突的左孩变右孩",即将结点6连在被旋转点5的右孩子上。假设我们要依次插入:17、18、23、34、27、15、9、6、8、5、25。原创 2024-06-30 21:52:20 · 598 阅读 · 0 评论 -
【简易版tinySTL】 哈希表与移动语义
哈希表(HashTable)是一个重要的底层数据结构, 无序关联容器包括内部都是基于哈希表实现。原创 2024-06-30 21:49:49 · 353 阅读 · 0 评论 -
【简易版tinySTL】 deque容器
把取值范围限定在[0,capacity-1]这个区间,如下图:当frontIndex = 3,在后面时,如果index = 2,capacity = 4,则(3+2)% 4 = 1;如下图:当frontIndex = 0,在后面时,如果index = 2,capacity = 4,则(0+2)% 4 = 2;当数组容量不足以容纳更多元素时,创建一个新的数组,将现有元素复制到新数组中,释放旧数组,并更新相关成员变量。需要注意的是, 原来的数组中, 逻辑上索引为0的位置(也就是。都是常量,所以输入形参是。原创 2024-06-20 19:45:26 · 589 阅读 · 0 评论 -
【简易版tinySTL】 vector容器
如果 p 是指向数组 arr 的指针,那么也可以使用 p[i] 来访问数组元素,它等价于。内存分配策略不同、无范围检查和异常处理、只实现了一些基本的功能,例如插入、删除、访问元素等,而没有涵盖。会分配一块新的内存空间,将原有元素复制到新的内存中,然后释放原内存。构造函数:初始化Vector对象,默认设置指针悬空,容量设置为0,当前元素的数量也为0。通常会将容量翻倍,以避免频繁的内存分配操作,从而减少系统开销。下标操作符重载,允许通过下标访问Vector中的元素。时,arr是指向数组首地址的指针。原创 2024-06-20 19:42:34 · 1000 阅读 · 0 评论