自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】二叉搜索树(搜索二叉树)

本篇聊聊二叉搜索树,二叉树基本知识的详细讲解在。

2025-02-11 17:57:47 942 11

原创 【数据结构】二叉树

本篇我们来说一下数据结构中的树。

2025-02-10 12:30:00 1271 9

原创 【C++】多态详细讲解

多态是⼀个继承关系下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Adult。Adult对象买票全价,Student对象优惠买票。实现多态还有两个必须重要条件:必须是基类的指针或者引⽤调⽤虚函数被调⽤的函数必须是虚函数,并且完成了虚函数重写/覆盖。说明:要实现多态效果,第⼀必须是基类的指针或引⽤,因为只有基类的指针或引⽤才能既指向基类对象⼜指向派⽣类对象;第⼆派⽣类必须对基类的虚函数完成重写/覆盖,重写或者覆盖了,基类和派。

2025-02-05 22:21:36 1230 13

原创 【C++】详细讲解继承(下)

本篇来继续说说继承。上篇可移步至1.继承与友元友元关系不能继承,也就是说基类友元不能访问派⽣类私有和保护成员。像上面的代码,Fun函数只能访问Same基类的成员变量_name,_stuid是访问不到的。解决方法就是在派生类Student里面也加上友元声明,就可以了。

2025-01-24 22:34:11 1055 10

原创 【C++】详细讲解继承(上)

继承机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段。我们前面接触到的都是函数层次的复用,遇到过的类层次的复用有模板,而继承是类层次的一种新的复用。继承允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类(或子类)。假如现在我们模拟校园环境,设计老师(Teacher)和学生(Student)两个类。老师和学生都有姓名、电话、地址、年龄等成员变量,都有身份认证相关成员函数。

2025-01-23 18:32:33 1752 6

原创 【C++】模板(进阶)

模板参数可以是类型形参,也可以是非类型形参。类型形参就是我们目前接触到的一些模板参数。//类型模板参数非类型模板参数就是用一个常量作为模板的参数,在模板中可以将该参数当作常量使用。//N为非类型模板参数template<class T, size_t N = 10> //N给缺省值template<size_t N> //N没给缺省值比如说我们要弄一个数组长度是固定的栈。//定长数组//...在使用的时候就可以传想要的N的值。int main()

2025-01-21 22:46:20 1073 11

原创 【C++】优先级队列以及仿函数

因为优先级队列就是堆,堆的底层是数组,所以优先级队列的默认适配器也是数组。需要用到访问下标的,数组一定是最好的选择。不了解堆的,建议先看下面这篇博客。【数据结构】堆的概念、结构、模拟实现以及应用在C++中优先级队列的相关接口就是如上这些。这里的top,如果大的值优先级高,也就是大堆,top返回的就是堆里面的最大值,如果是小的数优先级高,也就是小堆,返回的就是最小值。仿函数本质是一个类,这个类重载了operator(),这个括号重载的是函数调用时参数列表的括号,它的对象可以像函数一样使用。

2024-12-20 22:57:34 1382 20

原创 【数据结构】堆的概念、结构、模拟实现以及应用

本篇我们来介绍一下数据结构中的堆。

2024-12-09 23:14:27 1687 25

原创 【C++】栈和队列的模拟实现(适配器模式)

不论是C语言还是C++,我们都用其对应的传统写法对栈和队列进行了模拟实现,现在我们要用新的方法模拟实现栈和队列,这个新方法就是适配器模式。C语言传统写法: C语言模拟实现栈 C++传统写法:C++模拟实现栈 stack满足只能在一端插入和删除就行,我们的底层用vector的话可以满足这个条件,底层用list同样也可以满足这个条件。既然如此,我们就不需要原生实现栈,直接用vector或者list封装转换一下不就好了。如果是用vector实现栈,就是数组栈,用list实现栈,就是链式栈。我们把栈的所有实现都放

2024-12-04 22:59:54 1477 25

原创 【数据结构】队列的概念、结构和实现详解

本文来介绍一下数据结构中的队列,以及如何用C语言去模拟实现。

2024-11-30 22:59:03 1731 29

原创 【C++】list模拟实现(万字详解)

我们迭代器里面实现了前置++和前置--,还需要实现后置++和后置--。在文件的lst_iterator类里面实现。

2024-11-26 22:15:38 1466 21

原创 【C++】list使用详解

list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。以下为list中一些常见的重要接口。

2024-11-19 22:22:16 1386 20

原创 【C++】vector模拟实现的补充知识

本篇以模拟实现vector为背景,来介绍一些更深入的知识。

2024-11-12 20:32:04 910 13

原创 【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下,通过对vector的模拟实现,我们来说一下迭代器失效问题。

2024-11-10 22:47:10 900 22

原创 【C++】vector使用详解以及动态二维数组

在使用时需要加头文件vector是一个标准的模板。不知道什么是模板去看【C++】模板(初识):函数模板、类模板-优快云博客第一个模板参数是要存的数据类型,第二个模板参数是一个空间配置器,就是一个内存池,现在不用关心他是什么。我们在vector学习时一定要学会查文档。string因为一些发展历史的原因,设计的接口比较多,比较冗余,vector相对来说就好很多,接口比string少很多。我们还是重点说经常使用的接口。

2024-10-28 22:18:54 2853 18

原创 【C++拓展】深拷贝的传统写法vs现代写法,你更喜欢哪个?

这篇呢是关于深拷贝的拓展知识。目前我们学到的知识中,会用到深拷贝就是和。传统写法的代码实现相信大家已经是手拿把掐,知道现代写法如何实现吗?我们来一起看看。(全文以我们前面模拟实现的string类为背景,文中函数的返回值类型最好是string的引用)

2024-10-27 09:30:00 754 22

原创 【C++】string类 (模拟实现详解 下)

我们接着上一篇继续对string模拟实现。从这篇内容开始,string相关函数的实现就要声明和定义分离了。

2024-10-24 00:25:22 836 21

原创 【C++】string类 (模拟实现详解 上)

我们不仅要会使用strng的接口,还要模拟实现,更深地理解strng的底层逻辑。这里我们最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数这些比较核心的接口。

2024-10-20 16:36:31 1052 33

原创 【C++】string类接口使用(万字详解)

来看(3)string (const string& str, size_t pos, size_t len = npos);它可以算是拷贝构造(2)的一个变型,和(2)对比着来看,(2)是全部拷贝,(3)就是拷贝一部分。从pos这个位置开始,拷贝len的长度过去。//从下标是6的位置(w),拷贝5个字符如果len比剩余字符大,不会报错,会默认拷贝到字符串结束。不传第三个参数,也是默认拷贝到字符串结束。我们可以点进这个npos看一下是什么。这里想表达的意思就是,字符串有多长取多长。

2024-10-16 09:00:00 1305 38

原创 【C++】模板(初阶)

也可以用typename)class 类模板名//类内成员定义比如说我们写一个栈Stack的一部分。public:Stack(int n = 4) //构造,_size(0){}~Stack() //析构{}private:T* _arr;int _size;这里的Push压栈时,空间不够我们要扩容,扩容怎么写?直接手动扩容,不用realloc那些函数了。步骤如下。if (_size == _capacity)//当空间不够时//手动扩容//原数据拷贝到新空间。

2024-10-09 15:44:36 1193 17

原创 【C++】内存管理:内存分布、new/delete

new和delete最主要的是为了让自定义类型用起来方便。拿下面这个A类举例。class Apublic:A(int a = 0) //构造:_i(a)A(const A& a) //拷贝构造~A() //析构private:int _i = 1;new一个A类的对象,会直接自动调用它的构造函数,delete时,会直接调用析构函数。delete p1;delete p2;如果我们想弄一个链表出来,也比在C语言里简单。struct ListNode //链表的一个节点。

2024-09-28 15:57:12 877 13

原创 【C语言】动态内存管理:malloc、calloc、realloc、free

本篇介绍一下C语言中的malloc/calloc/realloc。使用这些函数。malloc/calloc/realloc申请的空间都是的。

2024-09-28 15:54:44 1165 15

原创 【C++】类和对象(下)相关练习

题目要求和,但是像循环,递归,求和公式这样的方法都不让用,这种情况下我们最先想到的就是static成员变量的使用。我们每创建一个类对象就会调用一下构造函数,加上static修饰后出局部作用域不会销毁,这给我们提供了一个思路。我们先重新创建一个Sum类,成员变量是静态成员变量,成员函数一个是对调用次数进行累加的,一个是返回最终结果的静态成员函数。

2024-09-22 09:30:00 566 17

原创 【C++】类和对象(下):再探构造函数、类型转换、static成员、友元、内部类、匿名对象、拷贝对象时编译器的优化

的地方。我们有成员变量的声明,对象的定义,那成员变量在哪里定义?就在初始化列表。

2024-09-22 09:00:00 823 15

原创 【C++】类和对象(中):类的默认成员函数,构造函数、析构函数、拷贝构造函数、运算符重载

这篇我们继续学习C++类和对象部分,大概会说一下类的一些默认成员函数,构造函数、析构函数、拷贝构造函数、赋值运算符重载这些知识。

2024-08-10 22:58:42 1155 16

原创 【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C++,也用C语言实现过栈,就我们当前所更新过的有关C++学习内容以栈为例子,来简单对比一下C语言和C++。

2024-08-05 23:00:07 669 15

原创 【数据结构】栈的概念、结构和实现详解

以及给类型和栈的结构取别名。

2024-08-05 19:30:24 1814 21

原创 【C++】类和对象(上):初识类和对象

class为定义类的关键字,Stack为类的名字,类名随便取,{}中为类的主体,类定义结束时后面的分号不可省略。类主体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中函数称为类的方法或成员函数。与C语言的结构体的定义相似,第一个不同就是类成员还可以是函数,C语言的结构体里面没有函数。比如我们定义一个栈的类。void Push(int x) //成员函数(类的方法)//...void Pop()//...int top()//...int* _a;

2024-08-02 20:04:05 1118 19

原创 【C++】C++入门知识详解(下)

我们接着来介绍另一些C++入门基础知识。

2024-08-01 14:57:34 947 19

原创 【C++】C++入门知识详解(上)

定义命名空间,需要使用namespace关键字,后面跟命名空间的名字,然后接一对{},{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。以上面的rand为例,定义一个命名空间,命名空间的名字随便起嗷int main()return 0;namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量此时再看我们的程序,运行没有报错,变量rand和函数rand已经不在同一个域内了,就不会冲突虽然程序没有报错,但是报了如下警告。

2024-07-28 20:40:35 793 27

原创 【数据结构】单链表经典算法题的巧妙解题思路

介绍完了单链表,我们这次来说几个经典的题目,本篇的题目衔接下一章双向链表哦~

2024-04-20 09:30:00 1713 35

原创 【数据结构】单链表(二)

我们接着上一篇来继续实现单链表。

2024-04-12 16:43:29 1199 18

原创 【数据结构】单链表(一)

就行了(在。

2024-04-10 08:30:00 1241 19

原创 【数据结构】顺序表

这里我们选择用。

2024-04-07 19:50:56 1321 22

原创 【C语言】结构体详解

位段是基于结构体的,位段的声明和结构类似,但有两点不同1.位段成员必须是,在C99中位段成员类型也可以选项其他类型2.位段成员名后面有一个冒号和数字,然后再加分号比如struct S1 //位段int _a : 2;int _b : 5;struct S2 //结构体int _a;int _b;int _c;int _d;这就是位段式的结构 ,成员名命名合法即可,不一定要加下划线(_)

2024-03-31 18:12:26 1405 20

原创 【C语言】文件操作

我们写的程序储存在电脑中,如果程序退出,内存被回收数据就丢失了,再次运行时就看不到上次运行的数据,如果要将数据进行持久化的保存,就要使用文件。程序文件、数据文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)文件内容不一定是程序,而是程序运行时读写的数据文件名:一个文件要有一个唯一的文件路径,以便用户识别和引用,包括3部分:文件路径+文件名+文件后缀。

2024-03-28 22:32:52 1099 10

原创 【C语言】内存函数

需要头文件:#include ·函数memcpy从source的位置开始向后复制num个的数据到destination指向的内存位置·这个函数·如果source和destination有任何重叠,复制的结果都是未定义的(此函数本无重叠拷贝的能力,但是库函数依然可以实现重叠拷贝)

2024-03-18 19:35:37 828 12

原创 【提升C语言基础知识】数据在内存中的存储

整数(占4个字节,即32个bit)的二进制表示方法有3种,即,三种表示方法均有和两部分:直接将数值得到的就是原码:将原码最高位,0为正,1为负,其余位得到反码得到补码 (补码得到原码也可以使用取反,+1的操作)正整数的原,反,补码都相同,如下负整数的原,反,补码各不相同,如下补码我们设置一个整型的n的地址为 0x11223344当调试查看内存的存放的时候,发现地址存放顺序是反的,为 44 33 22 11,我们需要注意:1.数据在内存中储存的是2.在调试窗口观察时,为方便显示,显示的是16进制。

2024-03-16 20:46:08 1441 5

原创 【c语言】有意思的指针题目

在环境下,下面程序输出的结果是什么?

2024-03-10 01:44:17 620 4

原创 【c语言】 指针知识精简版

整型指针,用来存放整型的地址,将整型a的地址用取地址符(&)取出来,存放在指针p中类型的指针访问4个字节,若p+1,则跳过4个字节。

2024-03-07 20:18:31 422 6

空空如也

空空如也

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

TA关注的人

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