STL
文章平均质量分 92
楠鹤晴
C++后端优质创作青年
展开
-
【C++之容器篇】AVL树的底层原理和使用
AVL树其实是在搜索树的基础上加上一些限制因素,从而使搜索树的结构保持相对平衡,通过前面我们对二叉搜索树的学习,我们知道,如果我们向一棵二叉搜索树中插入一些有序的数据,那么整棵树就会偏向于一边 ,从而使整棵树失去平衡,那么在查找的时候就会效率低下,退化为顺序表的效率了,今天我们学习的AVL树本质上就是为了解决二叉搜索树中失去平衡的问题,为了控制二叉搜索树中的子树的左右子树的高度差保持相对平衡,我们采取在树中的每一个结点中增加一个变量来记录每一个结点的平衡因子,我们可以定义平衡因子为该子树的右子树的高度-左子原创 2023-02-20 15:28:41 · 600 阅读 · 3 评论 -
【C++之容器篇】map和set常见函数接口的使用与剖析
map和set是数据结构中非常常用的结构,这两个结构都属于二叉搜索树,set中的结点存储的是关键字,map中的结点存储的是键值对。set和map都只支持存储唯一一个关键字,不允许关键字冗余,但是其衍生出来的multiset和multimap数据结构就支持存储多个关键子,下面将通过实际代码来详细介绍这两类数据结构的使用。原创 2023-02-18 12:43:20 · 1285 阅读 · 9 评论 -
【C++之容器篇】二叉搜索树的理论与使用
在数据结构初阶我们学习了二叉树的相关知识,普通的二叉树的作用只是用来存储数据,并没有任何的性质,所以在任何方面都没有什么优势,今天学习的二叉搜索树是在普通的二叉树的基础上加上了一些性质,使整体的搜索效率大大提升原创 2023-02-16 22:32:10 · 577 阅读 · 4 评论 -
【C++之容器适配器】反向迭代器的实现
前面我们学习的C++中适配器模式的一个例子:栈和队列的模拟实现,C++中的适配器模式本质上是一种代码复用的手段,其可以实现相同功能代码的复用,而不会写出一些重复的代码,从而造成代码的冗余。C++中另一个适配器模式的经典设计就是反向迭代器的封装,其通过适配正向迭代器的功能,从而实现了反向迭代器的功能,本篇文章将重点讲解C++中反向迭代器的适配模式,并以list和vector的反向迭代器为例。原创 2023-02-15 23:03:24 · 254 阅读 · 6 评论 -
【C++之容器适配器】栈和队列模拟实现
前面我们学习的都是C++标准模板库中的一些容器,今天我们要学习几个容器适配器,容器适配器的底层原理是通过适配另一个容器的功能来完成当前容器功能的实现,今天学习的栈和队列是通过deque来适配的,下面我们详细讲解stack和queue还有priority_queue的模拟实现原创 2023-02-14 23:49:49 · 355 阅读 · 9 评论 -
【C++之容器篇】造轮子:list的模拟实现与使用
前面我们已经学习了string和vector的模拟实现和使用,相信对于容器的模拟实现和使用的能力已经上升一定的水平,今天我们要学习的是list的模拟实现,List的模拟实现和string和vector其实没有本质的区别,只是在list的模拟实现过程中,list的迭代器和string和vector有所不同,这是我们实现List的模拟实现中需要重点掌握的,今天学习的List本质就是一个带头双向循环链表。原创 2023-02-12 23:49:30 · 507 阅读 · 6 评论 -
【C++之容器篇】造轮子:模拟实现vector类
vector本质就是一个支持顺序存储数据,并且容量支持修改得到顺序表。但是vector的底层结构实现相比于之前实现的string来说略有不同。string中的底层结构是通过一个指针数组和两个变量来标识数组中数据的变化。vector是通过三个迭代器来标识上述过程。原创 2023-02-11 22:35:23 · 938 阅读 · 7 评论 -
【C++之容器篇】精华:vector常见函数的接口的熟悉与使用
前面我们在学习C语言版本的数据结构时,学习过SeqList顺序表的实现,C语言实现的顺序表存在一定的局限性,一次性只能支持存储一种类型的数据,今天我们将学习C++标准库中一种新的顺序表:vector的使用原创 2023-02-10 23:45:49 · 2167 阅读 · 24 评论 -
【C++之容器篇】造轮子:string类的模拟实现
前面我们学习了string类型中常见函数接口的使用,今天这篇文章我们重点是要对string做到知根知底,这样我们才知道更加熟练地使用string来处理各种问题。原创 2023-02-09 23:43:50 · 511 阅读 · 6 评论 -
【C++之容器篇】精华:string常见函数接口的熟悉与使用
今天开始我们要开始学习C++中的一些常见的容器了,学习这些容器需要学会如何使用这些容器的常见的函数接口,同时还要学会这些容器的底层实现原理,这个能够为我们刷OJ题打下良好的基础。原创 2023-02-08 18:32:50 · 613 阅读 · 10 评论 -
【数据结构之链表系列】链表常见OJ题汇总(持续更新)
本文主要总结博主平时做过的链表的常见OJ题,持续更新~原创 2023-01-06 12:44:35 · 1384 阅读 · 6 评论 -
一文解决用C语言实现一个链表(全都是细节)
链表是指数据使用一个一个的结点连接起来的数据结构,这样的数据结构中不像顺序表一样,顺序表中不同的数据在内存中的存储空间是相邻的,链表中的相邻结点在内存中的存储位置是没有任何关系的,每一个链表都是由许多的结点组成的,而一个链表,我们需要一个对应的头指针来管理这个链表,也就是说,如果我们拥有一个链表的头指针,那么我们就可以拿到这个链表中的所有的结点,在此基础上,如果我们还学会对链表中的结点进行一些常见的操作(增删查改),那么我们就可以熟练使用链表来解决现实中的问题了原创 2023-01-06 11:03:26 · 1610 阅读 · 4 评论 -
直击AVL树要害:插入过程详解(大厂面试常考:建议收藏)
AVL树突破原创 2022-08-25 16:06:05 · 422 阅读 · 5 评论 -
图解STL之string使用(上)详解
STL中string的使用原创 2022-08-13 17:17:50 · 320 阅读 · 0 评论