- 博客(56)
- 收藏
- 关注
原创 C++修炼之路之多态--多态的条件与例外,重载+重写+重定义
对于面向对象的三大特性封装,继承和多态,封装和继承在前面已经介绍了,对于多态简单来说就是多种形态,就是当不同的对象去完成同一个行为时,产生的结果不同,他的实现是基于继承的基础上来完成的,但对于一些细节要格外关注注意
2024-04-20 23:30:59 1099 4
原创 C++修炼之路之继承<一>隐藏,赋值转换规则,继承关系
面向对象的三大特性为封装,继承和多态,对于封装在类与对象中介绍过,它其实就是通过封装底层的复杂实现机制,给我们展现出一个简单快捷方便的使用方式,如迭代器的使用,接下来我们将介绍第二大特性:继承
2024-04-19 18:21:42 697 6
原创 C++修炼之路之反向迭代器和非模板参数,模板特化,分离编译
在vector,list,deque等容器中还有反向迭代器来遍历数据,但对于反向迭代器的实现较为复杂,在模板中也还有一些深入了解的知识,如模板的特化,非模板参数和分离编译
2024-04-18 22:06:34 1086 4
原创 C++修炼之路之STL_stack,queue和容器适配器
在经过数据结构的栈和队列的了解后,在c++的STL中也实现了栈和队列,相对于数据结构部分的栈和队列,在c++中栈和队列的底层实现结构中加入了容器适配器的知识,使其可以更好的复用list和vector中的操作来模拟实现栈和队列
2024-04-17 23:35:20 987 5
原创 C++修炼之路之list模拟实现--C++中的双向循环链表
在前面的数据结构中已经实现了c版本的list-双向循环链表,但在c++中注重的是分装,对于操作进行封装处理,对于我们使用便是方便了不少,但模拟实现的话还是有许多要注意的细节点,尤其是list的迭代器较复杂,需要认真理解
2024-04-15 21:59:56 1096 5
原创 C++修炼之路之list--C++中的双向循环链表
list简单来说就是数据结构中的双向循环链表,作为链表中的顶级结构,双向循环链表的任意位置插入删除数据效率高,而且不用像单链表那样分情况来讨论插入删除的情况,在C++中经过封装变为了常用的list
2024-04-15 18:19:38 611 1
原创 c++修炼之路之vector模拟实现
在了解标准库中的vector之后,对于模拟实现vecor的各接口函数常常是面试时的重难点,在模拟实现vector的过程中主要有迭代器失效的问题,在模拟实现的vectro中是使用三指针来模拟实现vector的
2024-04-14 21:23:51 821 2
原创 c++修炼之路之vector--标准库中的vector
vector是表示一个可变大小的数组的容器,就和数组,顺序表一样,使用连续的空间来存储数据,访问数据,它的使用更加方便高效
2024-04-14 17:42:02 345 5
原创 算法修炼之路之双指针含多道leetcode 经典题目
在解决关于数组的问题时,常常用到双指针的解决方法来优化算法,帮助解决问题,常见的双指针分为普通双指针,快慢指针,左右相遇指针等
2024-04-12 21:14:37 475
原创 C++修炼之路之string模拟实现
介绍关于模拟实现一个string类,去更深层次的了解标准库中string的实现,帮助我们更加了解string类,提升代码能力
2024-04-10 22:09:02 1303
原创 C++修炼之路之string--标准库中的string
在日常中我们常常会使用字符串来表示一些数据,而在C语言中,字符串是以'\0'结尾的字符的集合,关于字符串的操作在c语言中有着各种str系列的库函数来处理字符串,但有时会因为误用而造成错误,且库函数多不易记住各库函数的的具体操作,因此在c++中提出了string类来解决各种字符串操作
2024-04-09 15:23:00 1055
原创 C++修炼之路之模板与STL简介
在比如写一个交换函数时,由于交换数据的类型不同,可能要写出很多个交换函数,在c++可以使用函数重载来实现,但如果数据类型多的话,要写的重载函数多,代码的复用率不好,可维护性差,这样在c++中就提出了使用模板来解决这个问题
2024-04-08 19:38:40 346
原创 C++内存管理new-delete大法及实现原理
在C/C++中,对于要开辟和释放动态的内存空间,在C语言中常常使用malloc,calloc,realloc,free四大函数来完成,而在C++中就会使用new和delete来完成动态内存空间的申请释放,而C++兼容C语言所以也可以使用四大函数,但注意free和delete不能混着用,尽量匹配使用的
2024-04-08 17:50:28 1081
原创 c++类与对象<三>初始化列表,静态成员,友元,匿名对象
在经过前面类与对象关于构造函数,析构函数,拷贝构造,运算符重载,引用等知识的铺垫后,接下来将会继续介绍关于类与对象剩下的一些小知识
2024-04-07 23:56:51 895
原创 c语言之动态内存管理及常见错误分析,柔性数组,内存划分
对于c语言的动态内存管理是在原先定义数组时,数组的大小被指定,无法修改,可能造成空间的浪费或者空间不够造成越界访问,所以在此基础上提出用malloc,calloc,realloc,free四大函数来维护,自己开辟想要的空间大小,并自己释放,而柔性数组也是用来动态开辟空间的
2024-04-05 10:46:42 1121 1
原创 C语言之自定义类型联合和枚举
在C语言中有内置类型和自定义类型之别,如char int,long,double 等等都是内置类型,而还有由struct,union,enum定义的自定义类型,接下来将介绍联合体union,和枚举类型enum
2024-04-05 08:26:56 536
原创 C易错注意之const修饰指针,含char类型计算,位段及相关经典易错例题
在c语言中常常会遇到一些用const修饰的指针或变量,而且const位置不同表示含义不同,容易出现错误,计算char类型数据时常常会忘记char类型的取值范围,循环等导致出错,还有用结构体来实现位段,用来节省空间
2024-04-04 23:40:07 1041
原创 C易错注意之表达式求值,整型提升,算术转换
表达式的整型运算要在CPU的相应运算器件内执⾏,CPU内整型运算器(ALU)的操作数的字节⻓度⼀ 般就是int的字节⻓度,同时也是CPU的通⽤寄存器的⻓度。因此,即使两个char类型的相加,在CPU执⾏时实际上也要先转换为CPU内整型操作数的标准⻓度。
2024-04-02 13:37:11 317
原创 c实现猜数游戏(猜不对可是要自动帮你电脑关机)
rand函数生成的随机数为伪随机数,范围是在0~RAND_MAX之间,但多调用几次会发现随机数生成是一样的,这是由于rand函数生成的随机数为伪随机数,使用算法生成的,可以预测的,但真正的随机数是无法预测的。其中每次算法生成的随机数的种子都是1,所以结果会一样
2024-03-31 19:51:51 303
原创 C易错注意之分支循环,悬空else,短路表达式,static
static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是⼀样的,⽣命周期就和程序的⽣命周期⼀样了,只有程序结束,变量才销毁,内存才 回收。但是作⽤域不变的。
2024-03-31 19:25:54 615
原创 C之易错注意点转义字符,sizeof,scanf,printf
scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF。
2024-03-30 23:06:21 1118
原创 c++之类与对象<一>
c++要兼容c语言,所以c++中的struct可以当作结构体使用。另外c++中struct还可以用来定义类,和class定义类是一样的,区别是struct定义的类默认访问权限是public,class定义的类默认访问权限是private.在继承和模板参数列表位置,也是有区别的
2024-03-23 20:15:23 794
原创 c++入门
c++作为一种编程语言,结合了面向过程编程的c语言,也在此基础上做出了创新改变,使之称为一门既面向对象又面向过程的编程语言,并不断地作出改动,成为一种较流行的语言
2024-03-23 13:03:09 565
原创 链式二叉树--前序中序后序遍历,高度,节点个数问题
链式二叉树作为后续AVL树,B系列树的雏形,理解掌握链式二叉树的各种操作很重要,此处就需要用递归来实现链式二叉树的各种操作,相信认真学习过后会对递归有更深刻的理解,接下来我们就开始上菜
2024-03-17 19:32:49 383
原创 树的初步了解及堆,堆的topk问题,堆排序
数据结构的树是一种较复杂的结构,包含多种分支结构,如完全二叉树,满二叉树,堆,以及更难理解的AVL树,B数,B+树等等,这些结构共同组成了树的庞大结构体系,接下来我们将初步了解关于树,堆等结构
2024-03-13 14:26:55 1020
原创 基础数据结构之栈和队列
栈和队列作为数据结构的重要组成部分,可以用栈实现非递归等,为后面学习打基础。栈由数组来实现,队列由链表来实现,接下来将详细介绍
2024-03-11 17:36:48 363
原创 拿捏带头循环双向循环链表
我们所知道链表有八种结构,是由循环与不循环,带头不带头,单向与双向相互组合而成的,头节点是不存储任何数据的,其中我们主要学习的为带头循环双向和无头不循环单向链表(单链表),接下来我们将深入了解关于带头循环双向链表的魅力
2024-03-10 09:38:59 356
原创 脚踩顺序表
数据结构的主要含义为在内存中存储管理数据,对数据进行增删查改等操作,其中最主要的一种数据结构就是顺序表,顺序表其实是用数组来实现的,用来操作数据
2024-03-09 20:15:00 331
原创 拿捏算法的复杂度
当我们写程序尤其是写OJ题时常常会看见要求时间复杂度和空间复杂度。其实评价一个算法好不好,常常从时间复杂度和空间复杂度两个方面说起,时间复杂度简单来说就是衡量程序跑的快不快空间复杂度就是程序运行时占用空间的大小,两个均为数学函数表达式
2024-03-09 17:46:43 515
原创 拿捏单链表
链表是由一系列的节点构成,每个节点包含一个数据内容的数据域和一个指向下一个节点的指针的指针域。每个节点是由malloc申请来的,所以每个节点是在内存空间中的堆区中,并且是在堆中随即申请的,所以各结点的地址是不连续的,是随机的。并且与在栈中申请的局部变量不同,局部变量出作用域销毁,而节点是在堆中,不销毁。每个链表都包含一个头节点和一个指向头结点的指针变量,用来对链表进行各种操作。每个链表的尾节点中指针域为NULL。
2024-02-16 12:10:37 1136 2
原创 你不了解的结构体大小知识
结构体的第一个成员对齐到和结构体起始位置偏移量为0的地址处; 其他成员变量对齐到对应对齐数整数倍的地址处; 对齐数==编译器默认对齐数与该成员变量本身大小的较小值 vs中默认对齐数为8,Linux中无默认对齐数,对齐数就是成员变量自身大小 结构体的总大小为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的)的整数倍 如果结构体中嵌套了结构体,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍,结构体整体的大小就是所有
2024-02-02 00:04:59 910
原创 c语言小游戏之扫雷
扫雷游戏就是如平常战争片里见到的,工兵去布满雷的地区去一步步的排除雷,该游戏就简单模拟该场景。该游戏是在9*9的81个格子中随机布置10个雷,然后通过排查坐标的形式慢慢排查出雷的位置3.玩家通过输入要排查坐标的位置来开始扫雷,如该位置是雷的话,则玩家被炸死,游戏结束,反之该位置将显示周围8个坐标位置雷的数量,便于玩家继续思考排查若排查完所有的无雷的71个坐标,则显示扫雷成功。
2024-01-22 17:22:55 1997 5
原创 新手必了解c语言之内存函数
在了解各种各样的字符串函数之后,那么如果对于整型数组,浮点型数组或结构体数组该如何实现数组的复制,比较等操作呢,这就涉及到接下来的内存函数相关知识
2024-01-16 17:13:25 497 1
原创 新手小白必了解c语言之字符串函数
c语言中字符串是一个特殊的存在,相关操作是由各式各样的字符串函数来实现的,接下来我们就讲解c语言中常见并且常用的字符串函数2.C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。
2024-01-06 21:15:40 1139 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人