自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 C++——STL——unordered_map与unordered_set的使用以及使用哈希表封装unordered_map/set

1.unordered_set的声明如上,Key就是unordered_set底层关键字的类型默认要求Key支持转换为整形,如果不支持或者想按自己的需求走可以自行实现支 持将Key转成整形的仿函数传给第二个模板参数t默认要求Key支持比较相等,如果不支持或者想按自己的需求走可以自行实现支持 将Key比较相等的仿函数传给第三个模板参数底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给 第四个参数。5.⼀般情况下,我们都不需要传后三个模板参数。

2025-05-26 20:44:10 541 4

原创 高阶数据结构——哈希表的实现

/根据当前容量 n,返回一个预定义的素数表中大于等于 n 的最小素数,用于哈希表扩容。// >=//对于可以直接转换为整形的,直接转换即可// 对于string类型(不可以直接转换为整形的)需要进行特化template<>hash += ch;enum StateEXIST,EMPTY,DELETE//开放寻址法需要一个连续存储的数组,每个位置不仅要存储数据,

2025-05-26 12:49:27 1077 6

原创 C++——STL——封装红黑树实现mymap与myset

【1】如果当前结点是父亲的左,根据中序左子树->根结点->右子树,那么下一个访问的结点就是当前结 点的父亲;如下图:it指向25,25右为空,25是30的左,所以下一个访问的结点就是30。这个符合左根右的规则吧,那么到了30呢?下一步应该怎么去做呢?【2】迭代器++时,如果it指向的结点的右子树不为空,代表当前结点已经访问完了,要访问下一个结点 是右子树的中序第⼀个,一棵树中序第⼀个是最左结点,所以直接找右子树的最左结点即可。

2025-05-23 16:10:34 1109 4

原创 高阶数据结构——红黑树实现

这里,c就一定是新增的节点了。分析:因为p和u都是红色,g是黑色,把p和u变黑,左边子树路径各增加⼀个黑色结点,g再变红,相 当于保持g所在子树的黑色结点的数量不变,同时解决了c和p连续红色结点的问题,,u不存在,则c⼀定是新增结点,u存在且为黑,则 c⼀定不是新增,c之前是黑色的,是在c的子树中插入,符合情况1,变色将c从黑色变成红色,更新上 来的。,u不存在,则c⼀定是新增结点,u存在且为黑,则 c⼀定不是新增,c之前是黑色的,是在c的子树中插入,符合情况1,变色将c从黑色变成红色,更新上 来的。

2025-05-21 20:02:41 1901 16

原创 高阶数据结构——AVL树的实现(详细解答)

root = kk;else//循环找要插入的cur节点的位置while(cur)else//最后别忘了更新cur的父节点//这儿只是插入,一个一个的找应该插入的位置,虽然这里parent为倒第二个高度位置//cur为倒第一个高度位置,但是不慌,下面的更新bf,会找出不符合的parent//从而实现更新parent,所以现在不需要担心parent的位置//更新bf//先对插入的节点的位置的分析,从而判断应该加bf,还是减去bf。

2025-05-20 20:29:14 1733 6

原创 C++模板

class 类模板名//类内成员定义我之前的有关STL的文章中的模拟实现都是以模板来展开实现的,大家若还是不明白类模板的定义格式,以及怎么写的,可以参考我之前写的文章。一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有 目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。就是咱们写文件或者项目的时候,定义的.c,.h,.cpp文件这些东西。

2025-05-14 20:14:02 1681 20

原创 C++STL——map和set的使用

set的声明如下,T就是set底层关键字的类型• set默认要求T支持小于比较,如果不支持或者想按自己的需求走可以自行实现仿函数传给第二个模 版参数• set底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第三个参 数。• ⼀般情况下,我们都不需要传后两个模版参数。• set底层是用红黑树实现,增删查效率是 的。前⾯部分我们已经学习了vector/list等容器的使用,STL容器接口设计,高度相似,在这里我只挑选几个比较重要的接口来将。

2025-05-13 20:42:19 1307 20

原创 高阶数据结构——二叉搜索树(最细讲解,你不理解的东西,这里面都有讲解)

咱们不一股脑的全将代码抛出来,这样不利于理解,咱们分开解剖代码,一点一点的理解。K _key;{}public:private://缺省值传参先定义一个BSTreeNode节点,该节点一定要定义为struct,因为该节点得被后面的树频繁访问,定义为struct省事。之后,定义左节点,右节点,别忘了用初始化列表初始化。第二个BSTree才是真正的主体框架,private创建根节点成员变量并给缺省值。

2025-05-10 12:43:18 879 16

原创 数据结构——排序(万字解说)初阶数据结构完

⾸先从右向左找出比基准小的数据,找到后立即放⼊左边坑中,当前位置变为新 的"坑",然后从左向右找出比基准大的数据,找到后⽴即放入右边坑中,当前位置变为新的"坑",结 束循环后将最开始存储的分界值放入当前的"坑"中,返回当前"坑"下标(即分界值下标)。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的 相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,⽽在排序后的序列中,r[i]仍在r[j]之 前,则称这种排序算法是稳定的;

2025-05-07 22:44:24 1484 24

原创 数据结构——二叉树和堆(万字,最详细)

如上图就是树。注意:树 形结构中,子树之间不能有交集,否则就不是树形结构。看完了树,咱们再来看看非树,非树形结构:1. 子树是不相交的(如果存在相交就是上图)。2.除了根结点外,每个结点有且仅有⼀个父结点。3.⼀棵N个结点的树有N-1条边。

2025-04-27 20:37:19 1610 14

原创 C++多态

定义:是⼀个继承关系的下的类对象,去调用同⼀函数,产生了不同的行为。条件:1.必须是基类的指针或者引用调用的虚函数。2.被调用的函数必须是虚函数,并且完成了虚函数重写/覆盖。还有几点要注意一下:要实现多态效果,第⼀,必须是基类的指针或引用,因为只有基类的指针或引用才能既指向基类 对象又指向派生类对象;第二,派生类必须对基类的虚函数完成重写/覆盖,重写或者覆盖了,基类和派 生类之间才能有不同的函数,多态的不同形态效果才能达到。

2025-04-24 19:37:46 1016 14

原创 C++继承(最详细)

什么叫继承呢?继承算是属于对代码的复用。即在保持原有的特性上面,增加一些新的方法以及变量,就叫做继承。那么原有的类叫做基类(父类),增加新的方法以及变量之后的类叫做派生类(子类)。继承 呈现了⾯向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的 复用,继承是类设计层次的复用。来看这一段代码,那么观察可以发现,Student与Teacher这两个类都是属于派生类(因为它们都继承了基类Person的特性),而Person类属于基类。

2025-04-22 22:38:03 1262 18

原创 C++——STL——容器deque(简单介绍),适配器——stack,queue,priority_queue

咱们今天讲适配器以及deque,主要讲适配器,那么讲deque是因为,stack,queue的底层都是封装的容器deque。Container就是适配器,可以看出,官方库中都是以deque为底层容器,那么为什么呢?今天咱们就来讨论一下。deque与queue看着是不是很像,但千万别把他们给搞混了,deque是容器,而queue是容器适配器。

2025-04-21 22:09:09 1064 22

原创 数据结构——栈和队列

别忘了将栈顶的位置更新一下。看这个销毁代码熟悉不,没错,这个就是咱们单链表也用的销毁代码,循环销毁。

2025-04-21 19:33:27 1168 15

原创 C++STL——容器-list(含模拟实现,即底层原理)(含迭代器失效问题)(所有你不理解的问题,这里都有解答,最详细)

先来看一段代码:struct AAint _a1;int _a2;:_a1(a1),_a2(a2){}// 特殊处理,省略了一个->,为了可读性++lit1;1.好,咱们先来处理那个遗留下来的问题: 为什么pos后要用"."来访问成员变量,首先:这个地方iterator是一个类,不是指针,所以,pos是这个类实例化出的对象,所以现在知道这里为什么用“."来访问成员变量了吧。

2025-04-13 13:47:46 1584 24

原创 C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)

C++ vector

2025-04-02 20:26:57 1431 15

原创 C++STL——容器-string(含模拟实现,即底层原理)全博客最细,万字巨作!

目录1.什么是STL?2.容器——stringMember functions(成员函数)1.constructor(构造)2. Iterators(迭代器)1.begin2.end3.rbegin4.rend3. Capacity(容量管理)1.size2.length3.max_size4.capcity5.resize​编辑6.reserve7.clear​编辑8.empty​编辑4.Element Access(元素访问)2.at5.Modifiers(修改器)​编辑2.append。

2025-03-29 16:32:57 1531 28

原创 数据结构——顺序表与链表(最全,含代码以及思路讲解)

顺序表与链表

2025-03-26 21:46:06 1520 22

原创 C语言字符函数,字符串函数以及内存函数

2.第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标 记。3.strtok函数找到str中的下⼀个标记,并将其用 \0 结尾,返回⼀个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以被strtok函数切分的字符串⼀般都是临时拷贝的内容并且可修改。4.strtok函数的第⼀个参数不为 中的位置。NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串。

2025-03-24 21:30:36 1082 18

原创 C语言指针(详细总结)

世上无完人,也无完事。所以说,C语言成也指针,败也指针。这个野指针,一定一定要注意,还有内存问题,否则以后会吃大亏。本篇完..................

2025-03-19 22:03:31 1603 14

原创 内存管理(c和c++综合)

【2】calloccalloc的两个参数,分别是开辟元素的个数,每个元素的字节大小。注意,calloc与malloc最大的区别是,calloc开辟空间并初始化数组(拿0来初始化数组),但calloc的效率可能更低一些。

2025-03-17 16:17:56 1180 12

原创 c++类和对象最全,最详总结(干货满满,不容错过)

5.且声明与定义分离的时候,需要指定类域,否则编译器怎么知道去哪里找呢?(一般都会先局部找,再去全局找)(指定类域还是用。

2025-03-15 11:33:59 1570 24

原创 c++基础入门和数据结构初阶(1)

c++基础入门以及数据结构哦初阶--复杂度

2025-03-10 20:44:43 1133 16

原创 第一篇c++

c++基础入门探讨(1)

2025-03-09 20:31:33 1369 20

原创 【你相信自己吗?】

1.梦想启航2.博客安排3.关于工作的安排4.最后的最后

2025-03-09 17:10:07 176 8

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除