- 博客(24)
- 收藏
- 关注
原创 AVL模拟实现以及四种旋转方式图解
我们需要将parent,subL,subLR记录下来,然后将subL作为这棵树新的根节点,把subL的右节点subLR给到parent,让parent的左子树不再是subL而是subLR。我们需要将parent,subR,subRL记录下来,然后将subR作为这棵树新的根节点,把subR的左节点subRL给到parent,让parent的左子树不再是subR而是subRL。我们需要将parent,subR,subRL记录下来,因为此时的形状用单旋已经达不到效果了,此处我们需要运用到双旋。
2024-07-16 16:08:16 696 1
原创 文件IO~~软硬链接及动静态库
记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。一个进程加载到内存中,会把文件内容和动态库地址传入内存中,如果可执行程序形成task_struct里有地址空间,地址空间对应的页表中会有一个对应库的虚拟地址,页表到内存中的映射如果能形成,就会有对应的物理地址,指向内存中的数据。政府管理各区的例子。实际上,没有被打开的文件会放在磁盘当中。
2024-05-18 17:39:27 606 5
原创 set和map
insert返回值,是一个pair<iterator,bool>,我们通过调用first,就可以拿到对应key的迭代器,再通过迭代器,就可以访问到这个key所对应的value(通过迭代器.second获得)。set使用count时,依旧传入键值对,也就是value(key),接着count会去set找,传入的值是否存在,如果存在那么会返回1(因为set中数据存在也只会存在一个),不存在就返回0。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在。
2024-05-09 01:31:53 1054 6
原创 二叉搜索树相关
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉搜索树。
2024-05-07 23:17:08 1027 6
原创 多态及相关
重载:重载是之前学的,函数重载的条件是函数必须在同一个作用域内,并且函数的函数名得相同参数名不同,这样构成函数重载。重写上面有提到,要求重写的函数在不同的作用域内,分别在基类和派生类中,函数必须是虚函数才行,并且重写的函数需满足函数名,参数(缺省函数和非缺省函数都得一致,缺省值可以不相同),返回值都相等!!(协变除外)。重定义和重写属于一个互斥的关系,满足其一就不可能再符合另一种。重定义同样要求重定义的函数分别在基类和派生类中,但对于函数的条件有所不同。
2024-05-04 12:35:15 1089 6
原创 继承及相关
我们可以看到Teacher在Student类中有一份数据,同时又在Assistant中有一份数据,他们都有一份相同的Person,那我们访问Person中数据的话,我们究竟是通过Student访问的还是Assistant访问,这就出现了二义性。为了解决这个问题,我们有一个办法,就是加上virtual来虚拟继承。
2024-04-28 16:36:16 1024 7
原创 stack,queue的模拟实现以及优先级队列
这篇博客用来记录stack,queue的学习。stack的模拟实现比较简单,先上代码这里要提及的点是: 首先,看到模板类处传的默认参数是deque,deque属于既包含vector的一些优点又有一些list的优点,但由于他样样通样样松导致他不被我们广泛使用,这里不对deque进行详细介绍。和stack的模拟实现类似,还是比较好写的,直接上代码:queue和stack对比起来,不同的点在于queue有了队头和队尾的区别。出现front和back访问队头和队尾的元素,而栈上是top获取栈顶元素。 队列在p
2024-04-25 21:11:25 1193 6
原创 string常用接口及模拟实现
string相当于前面学的字符串,为了更方便操作,C标准库中提供了一些str系列的库函数。那么下面就来看看这些接口。
2024-03-11 00:42:19 795 3
原创 C++内存管理
/ new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间,还会调用构造函数和析构函数class Apublic:: _a(a)~A()private:int _a;int main()//调用构造函数和析构函数free(p1);delete p2;free(p3);return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。
2024-03-09 20:37:26 839 1
原创 类与对象(下)
构造函数的初始化列表是一种用于在创建对象时对成员变量进行初始化的特殊语法。形式:它出现在构造函数的函数体之前,用冒号开始,初始化列表里的语句用逗号“,”分隔。
2024-03-08 19:41:41 896 4
原创 文件及相关操作
文件存在的意义主要是保存数据。因为我们写的程序数据是存储在电脑内存中的,如果内存回收,数据就丢失了。因此我们想要将数据给永久保存,我们就可以使用文件。
2023-10-08 23:57:18 125 2
原创 字符函数和字符串函数
我们这里需要明白的一个点是:利用strtok函数时,字符串每被分隔一次时,指针都将指向分隔符的下一个元素,并且我们此时想要调用这个指针时,该指针将被置为NULL指针。首先,第一个出场的是字符转换函数,这里讲到两个很实用的字符转换函数。用途: 字符串中的字符被一些符号给分隔开了,我们利用这个函数可以将字符串中各个被隔开的字符给打印出来。该函数遇到\0停止,所以在用该函数时,一定要保证strlen的对象中要有\0来结束函数。用途:用来求字符串长度的函数,记录\0之前的字符的个数。• ⽬标空间必须可修改。
2023-09-10 20:14:43 53 1
原创 关于C语言的分支与循环语句
与for循环和while循环不同的点在于,该循环是先循环再来判断循环是否满足条件继续进行。若都不满足,则执行defalut语句的内容。而continue语句的概念是contiune后面的内容被直接跳过,接着循环接着从前面开始进行。if(),在括号里放上条件,满足条件则执行if后面的语句。无论是for循环还是while循环以及do-while循环都是可以套用在一起的。在多层循环嵌套的时候,goto循环可以以最快的速度跳出循环,对此也是十分适用!break语句的概念是直接跳出循环,使该循环不再进行。
2023-08-07 17:13:11 71 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人