- 博客(21)
- 收藏
- 关注
原创 c++进阶_二叉搜索树
嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,c++进阶——二叉搜索树,下面让我们开始今天的学习吧!c++进阶_二叉搜索树内容安排说明二叉搜索树实现二叉树搜索树应用分析二叉树进阶面试题1. 内容安排说明二叉树最重要的一点就是将每一个节点看成一个子树的根,对于理解会方便很多map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构二叉搜索树的特性了解,有助于更好的理解map和set的特性二叉树中部分面试题稍微有点难度,在前面讲解大家不容易接受,且时间长容易忘有些O
2024-08-19 10:37:54
708
原创 c++进阶之多态
继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。优先使用对象组合,而不是类继承。继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言:在继承方式中,基类的内部细节对子类可见。继承一定程度破坏了基类的封装,基类的改变,对派生类有很大的影响。
2024-08-17 02:58:43
884
原创 c++进阶——继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用public:protected:// 姓名// 年龄// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了Student和Teacher复用了Person的成员。
2024-06-10 12:03:06
1019
2
原创 list(二)和_stack_queue
/生成默认的构造函数class Datepublic:{}//生成默认的构造函数 class Date {public :int _year;int _month;int _day;} };//小堆 bool operator()(Date * p1 , Date * p2) {} };// 大堆,需要用户在自定义类型中提供 , PDateMore > q1。
2024-06-04 02:17:33
627
2
原创 list的模拟实现(一)
第二种方式:不同的模板参数表达的是不同的类,正如vector< int>和vector< double>表达的是两个不同的类。而当我们**直接访问结构体或联合体的成员(即不通过指针)时,我们使用点(.)**操作符。(下图pos坐标(中存储的是行和列)类似于节点中的_date),应该如下图注释所进行调用,const迭代器目标本身可以修改,指向的内容不能修改,类似const T* p。原生指针的++是连续的物理空间的++。,也可以是几个类互相搭配完成一件事情。,所以我就将节点指针封装成一个类,
2024-05-27 00:51:24
861
1
原创 vector的底层实现与模拟
注意:如果没有第二个重载的版本,当遇到特定情况时,就会发生非法的间接寻址,因为在调用构造时,编译器会选择更对自己口味的构造函数,如果没有重载第二个版本,那么v3的构造就会匹配迭代器区间的初始化,从而造成非法的间接寻址。我们需要注意的是:size()返回的是_finish-_start的值,但是_start的地址再扩容后已经发生了变化,所以我们需要用oldsize记录下扩容前的对象个数,从而避免调用size()类模板的成员函数,也可以是函数模板----(支持任意容器的迭代器区间初始化)
2024-05-25 00:01:23
1080
原创 Linux下的基本指令(2)
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的。功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。
2024-05-12 20:22:06
757
1
原创 Linux下的基本指令(1)
说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。任何一个父节点,可能存在多个子节点任何一个子节点,一定只有一个父节点所以,我们从/开始定位一个文件:/home/bit/test.c,为什么路径可以定位一个文件呢?因为路径具有唯一性!-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
2024-04-25 18:58:05
2321
原创 内存管理下及模板初阶
new的原理:1.调用operator new函数申请空间2.在申请的空间上执行构造函数,完成对象的构造delete的原理:1.在空间上执行析构函数,完成对象中资源的清理工作2.调用operator delete函数释放对象的空间new T[N]的原理1.调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请2.在申请的空间上执行N次构造函数delete[]的原理。
2024-04-21 23:44:30
2029
2
原创 类和对象最终与内存管理上
这个空间的大小通常等于对象的所有成员变量所占用的空间的总和,再加上任何可能由于内存对齐而产生的填充。这可能包括为成员变量设置初始值,以及执行任何必要的初始化代码(比如为栈上的资源开辟空间)。在开始我们的讲解之前,我们先来回顾一下c和c++的程序内存空间划分,并且用一道题目来回顾一下我们之前学习过的内容。构造函数可以执行任何必要的初始化步骤,包括为对象的成员变量或内部资源分配空间。push 和 pop 方法操作这个动态分配的数组,以实现栈的基本功能。有问题的同学自行阅读这张图,相信就能解决你的问题。
2024-04-20 15:55:56
1111
原创 类和对象第五弹
int _a1;return 0;同学们可以猜猜我们运行的结果是多少?答案是1和随机数在这里我们要提出一个概念;成员变量在类中的声明顺序就是初始化列表中初始化的顺序,与其在初始化列表中的顺序无关,所以我们在日常性写代码就要保证自己声明成员变量的顺序,防止发生意想不到的错误。
2024-04-17 23:35:17
1303
5
原创 类和对象第四弹之默认成员函数
嗨喽大家好呀,今天阿鑫给大家带来的是剩下的默认构造函数,好久不见啦,下面让我们进入本节博客的内容吧!类和对象第四弹之默认成员函数最终章1.赋值运算符重载2.const成员函数3.取地址及const取地址操作符重载1.1 运算符重载在c++中,C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型 op
2024-04-16 11:09:57
657
1
原创 C函数之memcpy()函数和memset()函数用法
头文件include<stdio.h>由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。函数返回一个。
2024-04-11 15:29:21
1328
2
原创 类和对象第三弹之默认成员函数
嗨喽,大家好呀,阿鑫又和大家见面了,今天带来的是类和对象的重头戏,那么事不宜迟,让我们开始学习吧!我们在上篇博客对构造函数和析构函数进行了简单的介绍,现在我们将具体学习这些默认成员函数,内容有点小绕,请同学们跟进阿鑫的思路,下面让我们进入默认成员函数的世界****对于给定缺省值的内置类型,会自动进行初始化注意:当缺省值和构造函数同时给出时,初始值由构造函数决定我们以调用func函数来说明,为什么参数必须是类型对象的引用与前面两种函数不同的是,我们没有写拷贝函数,编译器调用自动生成的拷
2024-04-11 01:07:41
1192
2
原创 c++过渡知识2
嗨咯,大家好,今天阿鑫给大家带来的是c++的过渡知识2,本篇属于c++过渡知识的收尾哦,难度不是很大,下面请大家阅读本篇博客吧!
2024-04-08 19:52:57
1208
4
原创 类和对象第二弹
4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。而对象在销毁时会自动调用析构函数,注释掉的是实际上运行的代码,编译器用了一个this指针来接受我们传过去的对象的地址,从而通过this来进行对象的调用。并且不指定,编译器不知道是谁的函数,只知道是一个全局函数,但是访问不了类中的成员变量,加了就知道是类的成员函数。其次,我们在计算类的大小时是不需要计算成员函数的大小的,他们不存在于对象的内存当中,存在与一个独立的空间。
2024-04-05 17:15:50
819
1
原创 编译与链接
下面我们先来认识一下翻译环境和运行环境同学们是否对我们的编辑器是如何工作的产生过疑问,为什么最后程序运行会产生一个.exe的文件呢?这其实是由于我们编辑器进行了编译与链接这个过程从而使得我们最终运行的程序是.exe我们的文件会经过中间的编译环境,最后生成我们的可执行程序,而最后的一个箭头就是我们的运行环境翻译环境生成计算机能看懂的机器指令,就是二进制命令当我们用记事本打开.exe文件,会出现一堆乱码,这就是我们最终生成的机器指令int a = 5;} 36。
2024-04-01 00:06:06
948
1
原创 c++过渡知识1
二.缺省参数和半缺省参数今天让我们来学习关于c++我们需要掌握的过度知识,相信经过阅读本篇博客,你一定清晰感觉到c到c++的过度还是比较大的c++用来创建命名空间的关键字是namespace,我们可以在自己命名的空间里随意创建变量,结构以及函数,下面一段代码我来给大家演示一下int age;char name;那么此时就会有小伙伴问了,我们怎么来用这些变量,结构和函数呢?这些是属于局部变量还是全局变量呀?哈哈,慢慢听我来给你讲。
2024-03-30 23:21:44
2090
1
原创 堆的介绍与堆排序算法
嗨喽大家好呀,我叫鑫鑫,这是我第一次写博客,想和大家分享一下我学习堆这一数据结构的感悟,希望对大家进一步深入理解堆能有帮助,那么,让我们开始领略堆的魅力吧!1.数据结构之堆定义:如果有一个关键码的集合,把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,则称之为堆上面的图片很明显的反应了堆的存储结构和逻辑结构,并且可以看出建出堆并不代表堆的存储结构是有序的,只能得出数组中的最大值和最小值,相信眼尖的朋友已经发现了。
2024-03-30 01:20:53
1142
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人