STL
文章平均质量分 97
C++ STL的详解及模拟实现
阿qiu不熬夜
积极更新,欢迎关注我哦
目前在更:C++与Linux
有关数据结构初阶与C语言入门与进阶的内容都可以在专栏找到哦
展开
-
红黑树介绍与模拟实现(insert+颜色调整精美图示超详解哦)
红黑树是平衡二叉树的一种,他在满足二叉搜索树特性的基础上,给每个结点增加了一个颜色属性,包括Red与Black;并要求从根节点到一个叶子结点形成的任意一条路径中,通过对结点颜色的限制规则,没有任何一条路径回比其他的路径长一倍原创 2024-04-04 19:04:07 · 1766 阅读 · 18 评论 -
AVL树的介绍与模拟实现(insert+旋转调平精美图示超详解哦)
AVL树在满足二叉搜索树条件的基础上,给每个结点中增加了一个平衡因子(这个平衡因子的值是该结点左右子树的高度差)。AVL树要求平衡因子的绝对值小于等于1,即任意一个结点左右子树的高度差不超过1。通过降低树的高度,从而达到减少平均搜索时间的效果(在这里做例子的平衡二叉树是按照大小次序依次插入的结果)原创 2024-02-02 04:12:54 · 1111 阅读 · 13 评论 -
反向迭代器的介绍与实现(超详解哦)
迭代器(iterator)提供一种通用的方法,使其能够依序访问某个容器所含的各个元素,而又无需暴露该容器的内部表达方式。有利于算法于容器的泛化。反向迭代器的访问方向与迭代器相反:反向迭代器的`++`操作使其向前前进一个元素。反向迭代器本质上其实是对普通迭代器的封装**:反向迭代器的`++`就是底层迭代器的`--`。原创 2024-01-24 02:24:13 · 1036 阅读 · 5 评论 -
binary_search_tree的介绍与实现(二叉搜索树精美图示详解哦)
之前我们了解到的效率很高的搜索算法就是二分查找算法,在二分查找算法下,搜索的时间复杂度可以达到 O(logN)。但是二分查找有一个很大的限制条件,即它必须要求数据有序。但是对于二叉搜索树而言,在建立二叉搜索树结构后,就可以实现查找效率为O(logN)。二叉搜索树即在二叉树的基础上满足:对于任何一个根结点,若左子树不为空,它的左子树的值全部小于根节点若右子树不为空,右子树的值全部大于根节点。这也就意味着,如果我们中序遍历一个二叉搜索树,得到的一定是一个递增序列。原创 2024-01-22 04:50:23 · 1080 阅读 · 9 评论 -
priority_queue的使用与模拟实现(容器适配器+stack与queue的模拟实现源码)
优先级队列与队列类似,我们不能随意访问其中的元素,只能访问队头的首元素。但是在优先级队列中,根据某种优先级(某个标准),任意时刻队列的首元素都会是整个队列中优先级最高的元素(默认情况下队头的元素为最大的元素,可以通过迪三个模板参数来调整)原创 2024-01-20 02:43:23 · 1039 阅读 · 8 评论 -
list【2】模拟实现(含迭代器实现超详解哦)
我们模拟实现的 list 底层是一个带头双向循环链表在实现list时,我们首先需要一个结构体以表示链表中结点的结构`list_node`,大致包括数据与指向前后结点的指针:原创 2023-09-03 21:18:16 · 2201 阅读 · 30 评论 -
list【1】介绍与使用(超详解哦)
list适用于需要经常在任意位置插入删除大量数据,且不需要经常访问任意位置元素的数据的存储list是一个类模板,可以支持存储任意类型原创 2023-08-28 21:35:23 · 1037 阅读 · 21 评论 -
vector【2】模拟实现(超详解哦)
vector中是通过三个迭代器 _start、_finish、_endOfStorage分别指向数据块的起始位置、有效数据末尾的下一个位置、存储容量末尾的下一个位置来管理数据的。vector中迭代器就是原生指针,本质上就是使用三个指针来管理动态申请的存储数据的空间。原创 2023-08-16 16:39:31 · 884 阅读 · 22 评论 -
vector【1】介绍与使用(超详解哦)
vector是可变大小数组序列容器。vector的底层是一块动态申请连续的空间,与数组类似,vector可以通过下标高效的访问数组中的元素;同时由于是动态申请的空间,可以根据需求扩容,弥补了数组大小固定的缺陷。原创 2023-08-12 23:14:07 · 740 阅读 · 15 评论 -
string【2】模拟实现(超详解哦)
在本篇文章中就要来模拟实现一下string类,以帮助我们更好的理解与使用string在我们模拟实现的string中,要具备库中string所具有的主要接口,例如:默认成员函数、迭代器、容量、元素访问、运算符重载、非成员函数。其中只实现这些函数的常用重载形式。原创 2023-07-31 01:37:40 · 578 阅读 · 20 评论 -
string【1】介绍与使用(超详解哦)
在C语言部分,我们对于字符串的操作经常借助C标准库提供的一系列操作字符串的库函数(`strlen等`)来实现的。但是,这样去操作字符串,函数与其操作的字符串是分离的,不符合面向对象的思想,使用时较为麻烦;而且需要自己管理底层的空间,容易导致越界访问的问题。在C++标准库中提供了管理字符串的string类,封装了方法与元素使操作字符串时更加方便原创 2023-07-15 23:24:01 · 1021 阅读 · 19 评论 -
模板初识与STL简介
泛型编程就可以通过只写一份对所有类型通用的代码,在需要使用的时候由编译器生成相应的代码,是代码复用的一种手段。模板是泛型编程的基础原创 2023-07-01 23:08:16 · 389 阅读 · 16 评论