- 博客(38)
- 收藏
- 关注
原创 【C++进阶学习】第一讲——继承(上)---基础概念及用法
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。在实际运用中一般使用都是public继承,几乎很少使用protetced/private继承,也不提倡 使用protetced/private继承,因为protetced/private继承下来的成员都只能在派生类的类里 面使用,实际中扩展维护性不强。派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。
2024-11-24 17:10:14
1080
41
原创 C++初阶学习第十三弹——容器适配器和优先级队列的概念
deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。1.3deque与vector和list的比较,以及deque的缺陷与vector比较,deque的优势是:头部插入和删除时,不需要搬移元素,效率特别高,而且在扩容时,也不需要搬移大量的元素,因此其效率是必vector高的。
2024-11-23 16:20:33
1361
31
原创 C++初阶学习 第十二弹——stack与queue的介绍和使用
C++中的stack是一种遵循后进先出原则的容器适配器。它提供了一系列标准的操作,使得用户可以方便地实现栈这种数据结构。在C++标准库中,stack并不直接暴露给用户,而是作为头文件中stack模板类的声明。这个类是std::deque的封装,因此默认情况下,栈是通过双端队列实现的。但是,用户也可以指定其他的容器作为栈的底层结构,比如std::vector或std::list。
2024-11-21 15:07:44
666
34
原创 C++初阶学习第十弹——深入讲解vector的迭代器失效
近期我们学习了vector的模拟实现和一些使用方法,接下来我们学习了解vector的迭代器的失效问题。扩容、缩容导致野指针式失效迭代器指向的位置意义改变。
2024-11-08 16:50:05
1952
57
原创 C++初阶学习第九弹-----vector的模拟实现
好了到这里vector的模拟实现差不多就实现完了,请大佬们多多支持。有图可以看出vector有三个成员变量,分别是。
2024-11-06 20:52:37
460
21
原创 C++初阶学习第八弹--深入解析vector的使用
vector是表示可变大小数组的序列容器 就像数组一样,vector也采用的连续存储空间来存储元素。这个问题经常会考察,不要固化的认为,vector增容都是2倍,具体增长多少是根据具体的需求定义 的。vs是PJ版本STL,g++是SGI版本STL。capacity的代码在vs和g++下分别运行会发现,vs下capacity是按1.5倍增长的,g++是按2倍增长的。esize有两个参数,一个是开辟空间大小,一个是初始化大小。可动态增长,可动态缩小,支持随机访问,支持插入和删除。
2024-10-24 20:41:33
590
25
原创 C++初阶学习第五弹——C++内存管理
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-08-18 23:39:39
1046
45
原创 C++初阶学习第五弹——类与对象(下)
类与对象(上):C++初阶学习第三弹——类与对象(上)-CSDN博客类和对象(中):C++初阶学习第四弹——类与对象(中)-CSDN博客函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型 operator操作符(参数列表)在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一
2024-07-31 22:57:04
1163
30
原创 C++初阶学习第三弹——类与对象(上)
int* arr;class是定义类的关键字, 其中A是类的名字,class{}中的是类的主体。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。类的两种定义方式: 1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,
2024-07-25 23:15:08
704
26
原创 C++初阶学习第二弹——入门学习C++
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。
2024-07-20 17:10:43
1218
33
原创 C++初阶学习第一弹——入门学习C++
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的 程序设计,还可以进行面向对象的程序设计。定义命名空间,需要使用到namespace关键字。
2024-07-09 01:18:30
1076
29
原创 链表的回文结构OJ
题目链表的回文结构_牛客题霸_牛客网对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为。题目来自【牛客题霸】题目对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true本题用到了链表的逆转和链表的中间节点的应用。
2024-06-07 20:24:31
539
22
原创 【数据结构】——(二叉树)堆
1.树概念及结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1
2024-05-18 16:19:04
830
27
原创 【数据结构】队列讲解且实现
队列(queue)是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。其严格遵循先进先出(First In First Out)的规则,简称FIFO。队头(Front):允许删除的一端,又称队首。队尾(Rear):允许插入的一端。///}QNode;int size;}Queue;// 队尾入队列// 队头出队列// 获取队列头部元素// 获取队列队尾元素// 获取队列中有效元素个数// 检测队列是否为空,如果为空返回非零结果,如果非空返回0。
2024-05-13 20:10:24
417
3
原创 【数据结构】详解栈且实现
栈压栈入数据在栈顶出栈出数据也在栈顶上图理解一下:栈的实现一般是顺序表。如果是顺序表的话,我们的栈顶应该要在数组末尾!如果在数组头部的话,数据进栈时还需要挪动其余数据以便数据的存入!效率很低!int top;}SL;//初始化//销毁//入栈//出栈//栈数据个数//判空//栈顶数据。
2024-05-13 19:47:36
513
4
原创 线性表的概念与结构,以及顺序表和链表的简单概念
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
2024-05-06 23:39:19
279
3
原创 getchar和putchar的用法
() 和 putchar() 是一对字符输入/输出函数.他们通常比scanf() 和printf() 函数更快更便捷。getchar()不带任何参数,其实getchar() 和putchar()与scanf() 和printf()功能相似。接下来博主简单的跟大家解释一下。
2024-04-28 17:15:11
1272
3
原创 字符函数和字符串函数
• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包 含 '\0' )。• 参数指向的字符串必须要以 '\0' 结束。
2024-04-27 21:22:31
519
1
原创 C语言 基本数据类型及大小
unsigned可以搭配前面的int、short、long一起使用,用unsigned修饰后的数字,就是不带负号了,也就是不能存放负数。整型的关键字是int,定义一个整型变量时,只需要用int来修饰即可。也分为短整型和长整型。浮点型又分单精度浮点型float和双精度浮点型double。前面的整型和浮点型都是用于存放数字。字符型,用于存放字符。
2024-04-27 16:51:44
729
1
原创 整数和浮点数在内存中存储
例如:十进制的6.0,写成⼆进制是 110.0 ,相当于 1.10×2^2。那么,按照上面V的格式,可以得出S=0,M=1.10,E=2。两部分,2进制序列中,最⾼位的1位是被当做符号位,剩余的都是数值位。符号位都是用0表式正,用1表式。(2)对于64位的浮点数,最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。(1)对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
2024-03-17 21:40:11
357
2
原创 学习C语言函数(#C)
ret_typefun_name(形式参数)• ret_type 是函数返回类型• fun_name 是函数名• 括号中放的是形式参数• {}括起来的是函数体讲解:• ret_type 是用来表示函数计算结果的类型,有时候返回类型可以是 void ,表示什么都不返回• fun_name 是为了方便使用函数;所以函数名尽量要根据函数的功能起的有意义。• 函数的参数函数的参数可以是 void ,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。
2023-12-30 22:21:15
1901
4
原创 简单的操作符,逻辑操作符和关系操作符
| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达 式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是 11,b是10。计算:先+1,后使⽤;
2023-12-29 13:34:07
2263
1
原创 C语言————分支和循环(下)
语法如下:1.while(表达式)2.语句;来写个代码看看;int main()while(1)//while后边条件满⾜,死循环的打印hehereturn 0;
2023-12-28 20:04:36
1099
1
原创 C语言————分支和循环(上)
正所周知,C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的。本期跟大家分享if 、 switch 分⽀结构。1.if语句if ( 表达式 )语句表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏,在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏。例如return 0;如果num=1,那么就会在屏幕上打印1,反之什么也不打印。1.2else。
2023-12-27 11:29:29
1801
1
原创 用#C打印水仙花数(包会)
我们要先了解什么是水仙花数,水仙花数定义为一个三位数的个,十,百位的立方和仍然等于这个三位数。好了定义讲明白了,接下来我们上操作。是什么,我来解释一下,根据定义我们要得到一个三位数 个,十,百位,所以以上代码就能解释通了。另外强调一下,因为算术操作符。hello,大家好,今天小博给大家分享如何用#C来写水仙花数的编程,好的,我们废话不多说,请看下方。好了今天跟大家分享到这里,我们下期再见,拜拜。返回值是整型,所以应该明白我为什么用。有的小伙伴们可能不太懂,
2023-12-19 20:23:37
434
原创 Sizeof和Strlen的简单用法及区别
俩者并没有本质的区别sizeof是计算类型或者变量⼤⼩的,strlen是计算字符长度的 ,当然\0和空格也是字符哦。第2点是我们知道数组中所有元素的类型都是相同的,那只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。sizeof是C语言的一个关键字,,是可以计算类型或者变量⼤⼩的,当然 sizeof 也可以计算数组的⼤小。这⾥的结果是:10,表⽰数组有10个元素。使⽤上⾯的计算,不管数组怎么变化,计 算出的⼤⼩也就随着变化了。
2023-12-12 21:38:43
415
1
原创 scanf常被忽略的知识点
就是一个占位符,%是占位符的标志,d表示整数)所以,用户输入的数据之间有一个或多个空格不影响scanf()解读数据。另外,用户使用回车键,将输入分成几行,也不影响解读。scanf()的返回值是一个整数,表示成功读取的变量个数。好了,以上就是小编跟大家分享的3点关于scanf()的知识点。,它的规则是,从当前第一个非空白字符开始读起,直到下一个空白字符为止。占位符会忽略起首的空格,从-处开始获取数据,读到-14停下来,除了。,如果一个数字都不输入,直接按3次。说到占位符什么是占位符呢,,会输出-1,也就是。
2023-12-04 20:27:59
643
1
原创 学习编程的第一篇博客
我是就读于河南牧业经济学院2023级的大一新生,学习的是物联网工程专业,本人来自河南省周口市。高考结束之后,我开始思考我要报什么专业,一次在偶然在网上看到计算机之类的专业很热门,于是抱着好奇的心态查了查,发现果然不错而且很符合我的兴趣。于是就准备报考计算机之类的专业,但是由于自己分数不是很高,报考的学校有限,然后我就来到了“牧院”。目前我学习的方式是看网课,看相关的书籍,看博客等等。虽然我很想进腾讯百度JD这样的大厂,但是它的难度对于目前的我是遥不可及的。呃呃,这只是我目前的目标!四.花费在编程的时间。
2023-11-21 22:36:05
138
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人