【C++】搜索二叉树/KVL树
暑假已经过去一半了,你的作业写的怎么样了? 不八八这些没啥用的了,本篇博客让我们来认识一下搜索二叉树以及KVL树,也为后续学习map和set打下基础。 在之前,我写过一篇用C语言实现的二叉树博客。如果你想了解二叉树的基本定义,可以看看👉 【传送门】 [TOC] 前言树是我们生活中非常常见的玩意,其特点便是从下而上有非常多的分叉 数据结构中的树便是以该特点命名的,每一个节点会有左右两个分叉来链接左右子树,从而构成一种数据结构。 1.搜索二叉树所谓搜索二叉树(二叉查找树),便是致力于方便搜索的一种数据结构,其具有一下特点: 比该节点大的数存放在右边 比该节点小的数存放在左边 这样 ...
【C++】STL:stack/queue/priority_queue/deque
来喽,STL的栈和队列! [TOC] 1.Stack栈是一个遵循LIFO规则的容器,即后进先出(last in first out)。后放入容器内的数据会先出来。 如果你不太理解栈的性质,可以先看看我写的C语言栈的博客【链接】 打开Cplusplus一看,栈的函数肉眼可见的少。这和我们C语言实现的功能基本是一样的。 它甚至没有拷贝构造! 1.1 容器适配器等会,这个container是什么玩意? 别急,先让我们来看看栈的类定义👇 12std::stacktemplate <class T, class Container = deque<T> > clas ...
【C++】STL:list
阿巴阿巴,list的博客来喽! [TOC] 1.list是嘛玩意?之前的vector是一个顺序表。总所周知,学完顺序表肯定不能不学链表,所以list就来了! list是一个可以在任何地方进行插入删除的序列式容器,可以进行前后双向迭代 说人话就是:list是一个双向带头循环链表 这不巧了嘛!之前我写过用C语言实现双向带头循环链表的博客 其优缺点也很明显 支持快速插入删除O(1) 支持前后双向迭代访问 不支持任意位置的随机访问 STL中的list也满足上面的这些优缺点 话不多说,来看看list的函数接口吧! https://m.cplusplus.com/reference/lis ...
【C++】STL:vector
STL的第二站,便是vector了。 对于学习STL,有一个非常大的好处便是,它们有很多函数都是相通的!这也是面向对象的一大好处:背后的函数实现可能不同,但是使用方式相同。 1.简单了解vector https://m.cplusplus.com/reference/vector/vector/ 老样子,打开我们的cplusplus——然后惊奇的发现,它换UI了!终于不再是那个2000年初的模样了(虽然这和我们的使用没啥关系) 不摸鱼了,来看看vector究竟是何方神圣——其实他就是一个顺序表 和string不同的是,vector有模板参数,可以存储任何类型的内容。int、double ...
【Linux】权限管理
Linux部分的内容,我以权限管理作为起始。 关于Linux命令行操作的部分,大家可以去网上搜搜,教程很多,且全面:【链接】。这里我就不再把相同的东西复述一遍了,毕竟Linux命令这种东西,你不会的时候可以去查,常见的命令敲多了肯定忘不掉 不多说,开始Linux权限操作的内容吧! 本篇博客所有演示均在CentOS7.6下进行 [TOC] 1.什么是权限?权限是用于对用户进行约束的。正好比视频网站的vip一样,没有vip权限,你就看不到只有vip才能观看的影片。 1.1 root和user在linux中,用户分为两种 root:超级用户 其他:普通用户 其中root用户的权限最高, ...
【C++】STL:string
这是接触STL的第一篇博客,让我们以string为始,走入SLT的世界吧! [TOC] 1.何为STLSTL是C++标准库的重要组成部分,其作用是为绝大多数数据结构提供轮子,是一个包罗了数据结构和算法的软件框架。 在之前C语言的数据结构专栏中,顺序表、链表等等都是需要我们自己造轮子来实现。但在C++中,有STL就好比站在了巨人的肩膀上,可以走的更远。当我们需要使用这些内容时,无需自己重新造轮子,从而大大提高了开发效率。 1.1 STL版本这里我直接贴一个C语言中文网的链接👉【点我】 里面详细介绍了STL发展历程中出现的几个版本,其中SGI因为被Linux的GCC所使用,可移植性高。之后的 ...
【C++】模板:了解泛型编程
本篇是C++模板学习的一些笔记 [TOC] 1.了解泛型编程泛型编程,故如其名,是一个泛化的编程方式。其实现原理为程序员编写一个函数/类的代码示例,让编译器去填补出不同的函数实现 就好比活字印刷术,可以灵活调整印刷的板块和内容,比只能固定印刷某一个内容的雕版印刷术效率更高,也让印刷术由此得到了更广泛的应用。 在C++中,函数重载和模板的出现,让泛型编程得到了实际的应用。其中模板,就是类似活字印刷术一样的存在。 我们写一个模板,编译器帮我们按照我们写的模板的方式,实例化成不同的函数。相当于替代了一部分操作,节省了代码量。 2.函数模板八八了那么多没用的,让我们来看看函数模板的语法 ...
【C++】动态内存管理
在之前类和对象的博客里面,已经记录过了C++中动态内存管理函数new和delete的基本使用。本篇博客是对C++动态内存管理的进一步细化 [TOC] 1.C/C++内存分区这是一个老生常谈的问题了,直接看下面这个图吧! 这里的数据区其实就是静态区,而代码区是常量区。这里的BBS区先暂时pass掉。 要想辨别上面的几个内存分区,可以现来看下面这个代码,你能分的清楚它们都是存在内存的哪一个区域吗? 12345678910111213141516int a = 1;//数据区static int b = 1;//数据区int main(){ static int c ...
【Git】如何同步Gitee和Github的仓库(超简单)
本篇博客的设置方法同样可以适用于gitlab等其他平台 不多bb,直入主题⏲ 实现两个仓库的同步1.准备两个仓库分别在两个平台创建一个相同名字的仓库,当然,你也可以在a平台上导入b平台已有的仓库,github和gitee目前都支持从别的平台导入仓库 这部分操作想必大家都会,就不演示了 2.克隆到本地需要注意的是,你要保证其中一个是主仓库。如果是多人合作仓库的话,想两个平台的远程仓库同时多人合作并保持同步是相对困难的。 https://gitee.com/musnow/LetsOJ 以我创立的这个多人OJ打卡仓库为例,现在我想得到的效果是,我和朋友们在gitee上面进行打卡协作,然后我 ...
【C++】快速学习类和对象,看这一篇就够了
本篇博客是学校大一下C++期末考察的要求,包含了C++中类和对象的大部分内容,适合学习类和对象的你观看。最后还有两个小项目,综合了绝大部分类和对象的知识,很适合练手+深化学习。 为了避免被同校copy,本篇博客只在我的HEXO个人博客上发布 第一章 绪论1.1 面向对象程序特点与目标面向对象有下面几个特征: 类与对象:把现实世界中的某一类东西,提取出来,用代码表示; 封装性:把过程和数据封装到一个包裹里面,对数据的访问只能通过公开权限的函数接口来进行操作; 继承性:一种联结类的层次模型,类似树状结构; 多态性:允许不同类的对象对同一消息做出响应,用不同的方法来解决一个问题。 其中 封装 ...