
C++
文章平均质量分 96
CILMY23
一名在读大三生,努力分享自己所学。
个人分享:我们必须选择自己想成为什么样的人,不是一次性地选择,而是重复地一而再地做出选择,终其一生。
注:周一到周五更新,周末回私信。
展开
-
【STL专题】优先级队列priority_queue的使用和模拟实现,巧妙利用仿函数解决优先级
上期我们讲了栈和队列的使用和模拟实现,本期我们将探究priority_queue,优先级队列的使用和模拟实现,并应用仿函数来解决优先级的问题。仿函数(Functor)是 C++ 中通过重载operator()运算符的类或结构体,其对象可以像函数一样被调用。它常用于定制算法的行为,例如排序规则、比较逻辑等,相比普通函数指针,仿函数能携带状态(成员变量),灵活性更高。例如我们在算法中使用sort,我们可以定义两个仿函数,来控制排序的逻辑。原创 2025-02-25 21:11:38 · 922 阅读 · 0 评论 -
【STL专题】栈和队列的使用以及模拟实现
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其对象只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。原创 2025-02-10 16:01:42 · 706 阅读 · 0 评论 -
解锁C++第二大特性,代码也玩“父子”游戏——继承
经过之前的学习,我们学了C++的第一大特性 —— 封装。现在我们来进行总结和回顾。封装可以理解为有两个层次的含义,其中封装的第一层是,以前我们学习C语言,它的数据和方法是分离的,在C++中,我们把数据和方法放到一个类里,用访问限定符进行限制。这是第一个层级的封装。第二个层级的封装,我们可以参考一下反向迭代器,还有迭代器的定义。这里的封装是指的什么呢?就是有些东西封装了后,我们在上层看到是类似的,但是下层是弯弯绕绕的。这里的上下层就可以类比迭代器的使用和实现。原创 2024-11-18 23:57:40 · 845 阅读 · 0 评论 -
【STL专题】深入探索vector:动态数组的魔力【入门指南】
这几篇对加深string都有认识,那接下来我们将接触vector容器,作为经典的容器之一,它又会带给我们什么呢?在模拟实现完string后,才明白大家为什么都在吐槽string,甚至阅读了一篇大佬的发言。string 的接口繁多,初次学习的时候眼花缭乱,不禁感叹的是,我也写下了最长的一篇博客(STL 的string类怎么啦?C++面试中string类的一种正确写法 | 酷 壳 - CoolShell。🏆本篇主题为:深入探索C++之std::vector:动态数组的魔力。甚至还阅读了一篇好文。原创 2024-08-02 00:45:00 · 1466 阅读 · 23 评论 -
【STL专题】模拟实现std::string,深入解析内部实现机制:从大小到运算符重载的探索之旅【万字详解】
🏆本篇主题为:模拟实现std::string,深入解析内部实现机制:从大小到运算符重载的探索之旅【万字详解】原创 2024-07-22 00:15:00 · 1580 阅读 · 5 评论 -
【STL专题】深入探索C++之std::string:不止于字符串【万字详解】
1.string是表示字符串的字符串类2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3.string在底层实际是:basic_string模板类的别名,typedef basic_string string;4. 不能操作多字节或者变长字符的序列。⚠⚠ 在使用string类时,必须包含#include头文件以及;原创 2024-05-24 11:00:27 · 2824 阅读 · 12 评论 -
【C++】模板的下一步,STL标准模板库的介绍
STL是C++,Standard Template Library(标准模板库)的缩写。是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。提供了一组模板化的常见数据结构和算法,并且由于其模板本质,能够以类型无关的方式处理数据。什么是C++标准库?C++标准库是C++语言的一个核心部分,它为程序员提供了一系列预定义的类和函数。这些类和函数用于实现常见的程序任务,如输入/输出处理(I/O)、字符串操作、数学计算、时间/日期处理、数据结构和算法等。原创 2024-05-21 13:01:29 · 1158 阅读 · 3 评论 -
【C++】模板魔法:如何用C++模板编写通用代码
在C++中,模板是一种特性,它允许程序员编写与类型无关的代码。模板分为两种类型,一种是函数模板,一种是类模板。原创 2024-05-20 17:28:47 · 1252 阅读 · 3 评论 -
【C++】C++的心脏:深入理解内存管理中的 new 和 delete
new的原理调用 operator new 函数申请空间在申请的空间上执行构造函数,完成对象的构造delete的原理在空间上执行析构函数,完成对象中资源的清理工作调用 operator delete 函数释放对象的空间new T[N]的原理调用 operator new[] 函数,在 operator new[] 中实际调用 operator new 函数完成N个对象空间的申请在申请的空间上执行N次构造函数delete[]的原理在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理。原创 2024-05-18 18:17:12 · 2053 阅读 · 20 评论 -
【C++】类和对象终章 --内部类和匿名对象,再识类和对象
欢迎来到CILMY23的博客🏆本篇主题为: 类和对象终章 --内部类和匿名对象,再识类和对象🏆个人主页:CILMY23-CSDN博客🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux🏆感谢观看,支持的可以给个一键三连,点赞关注+收藏。✨写在前头:一个月我们终于来到类和对象终章了,本篇我们将结束类和对象的学习,剩下的语法是内部类和匿名对象,这两部分语法较为简单。💡总结类和对象往期文章:C语言转型之路:从C到C++的类与对象初探赋值运算符重载,为什么默认原创 2024-05-15 20:16:53 · 1078 阅读 · 2 评论 -
【C++】 类的新成员:static成员和类的好朋友:友元
这么长时间,我们终于把构造函数的内容解决了,初始化列表,默认构造函数,构造函数和析构函数的顺序,全缺省的默认构造函数都值得我们细细品味,本期将接触类和对象中新的部分,static成员和类的好朋友:友元原创 2024-05-14 17:19:22 · 1178 阅读 · 8 评论 -
【C++】再识构造函数:初始化列表新方式
初始化列表直接跟在构造函数的参数列表后面,以冒号开始,后面紧跟一个或多个用逗号分隔的初始化表达式。顺序是先走上面的初始化列表,然后再走函数体内的赋值修改当出现函数赋值修改,缺省值,和初始化列表的时候,推荐是能用初始化列表就用初始化列表。有些成员必须走初始化列表,1. const 成员 2. 引用成员变量 3. 自定义类型成员(没有默认构造的自定义类型成员)成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后 次序无关缺省值是给初始化列表的。单参数构造函数支持隐式类型的原创 2024-05-13 16:18:24 · 1177 阅读 · 0 评论 -
【C++】C/C++中新const用法:const成员
本篇主题为: C/C++中新const用法:const成员在接触C++中const成员前,我们可以先复习一下C/C++中两种const的用法。在指针的入门篇我们写过的知识点(限制变量不被修改指针修改的情况指针所指向的内容指针变量本⾝的内容可变指针变量本⾝指针所指向的内容,可以通过指针改变。原创 2024-05-09 18:28:16 · 2122 阅读 · 15 评论 -
【C++】用C++实现一个日期计算器
本篇主题为: 用C++实现一个日期计算器知识所需:构造函数,运算符重载,类和对象,类的声明和定义分离,内联函数,拷贝构造额外知识: 友元声明文件注意的拷贝构造和析构都是不需要写的。原创 2024-05-07 14:53:46 · 1276 阅读 · 18 评论 -
【C++】类成员函数-----赋值运算符重载,为什么默认实现可能不够?
本篇主题为: 类成员函数-----赋值运算符重载,为什么默认实现可能不够?运算符重载是具有特殊函数名的函数,也具有其 返回值类型,函数名字以及参数列表运算符重载不能通过连接其他符号来创建新的操作符运算符重载还是要根据具体的需求来重载,不是所有的运算符都需要重载.* :: sizeof ?: . 这5个运算符不能重载原创 2024-05-06 06:00:00 · 1462 阅读 · 0 评论 -
【C++】深入浅出C++中深拷贝和浅拷贝
对于基本数据类型的成员变量,浅拷贝直接进行值传递,也就是将属性值复制了一份给新的成员变量对于引用数据类型的成员变量,比如成员变量是数组、某个类的对象等,浅拷贝就是引用的传递,也就是将成员变量的引用(内存地址)复制了一份给新的成员变量,他们指向的是同一个事例。在一个对象修改成员变量的值,会影响到另一个对象中成员变量的值。对于第一点不难看懂,浅拷贝就是对内置类型的拷贝按内存存储,字节序完成拷贝的,这点常常在C语言中体现,例如我们在给函数传实参的时候,通常是将实参拷贝一份传递给形参。原创 2024-05-03 12:01:09 · 2030 阅读 · 2 评论 -
【C++】拷贝复制:拷贝构造函数的使用
拷贝构造函数(有时又称为复制构造函数)是一种特殊的构造函数在对象创建时用于从同一类的现有对象中初始化新对象。也就是在创建对象时,创建一个与已存在对象一某一样的新对象。它只有单个形参该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。拷贝构造函数可以通过深拷贝或浅拷贝来创建新对象的副本,具体取决于类的设计和需求。例如:假设我们仍然有一个简易的学生类public:_age = age;原创 2024-05-01 00:01:50 · 1337 阅读 · 12 评论 -
【C++】构造函数、析构函数在局部、静态以及全局的调用和释放顺序
在局部域中,后定义的先析构,满足"后进先出",先定义的先构造局部和静态:局部优先调用对应的析构函数,满足"后进先出",静态最后调用析构函数局部,静态,全局:构造顺序是从 全局、静态--> 局部、静态,析构顺序是 局部 --> 全局、静态("后进先出")原创 2024-04-29 07:00:00 · 2140 阅读 · 12 评论 -
【C++】C++中的构造函数和析构函数详解
本篇主题为:C++中的构造函数和析构函数详解写在前头:本篇会从类的六个默认成员函数开始,进入构造函数和析构函数的研究。原创 2024-04-25 09:25:32 · 6917 阅读 · 14 评论 -
【C++】类和对象初探:类的实例化与对象生命周期管理,解析this指针的奥秘
this指针是一个隐含于每个成员函数中的特殊指针,指向调用该成员函数的对象本身。this指针的使用可以方便地访问调用对象的成员变量和成员函数,在代码中可以使用this->member的形式来访问对象的成员。原创 2024-04-23 01:29:22 · 1694 阅读 · 4 评论 -
C语言转型之路:从C到C++的类与对象初探
欢迎来CILMY23的博客本篇主题为 C语言转型之路:从C到C++的类与对象初探个人主页:CILMY23-CSDN博客个人专栏系列: Python | C语言 | 数据结构与算法 | C++感谢观看,支持的可以给个一键三连,点赞关注+收藏。写在前头:面向过程和面向对象的认识:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。面向对象都有以下三种特性:封装、继承、多态。例如:人用洗衣机洗衣服原创 2024-04-19 13:53:24 · 1626 阅读 · 12 评论 -
解密C++新特性:内联函数、auto和基于范围的for循环
本篇主题为: 解密C++新特性:内联函数、auto关键字和基于范围的for循环。原创 2024-04-16 13:38:16 · 1719 阅读 · 0 评论 -
【C++】掌握C++函数重载和引用开启代码优化的新篇章
本期系列为新系列【C++】,上一篇简要介绍了C++编程语言的初级概念。我们学习了C++的程序结构和基本语法,了解了关键字的作用和用法。通过命名空间,我们可以避免命名冲突,并组织代码。使用cin和cout进行输入输出操作,方便与用户交互。缺省参数可以使函数调用更灵活。通过学习,我们打下了C++编程的基础。接下来,我们将继续学习更多C++特性,提升编程能力。原创 2024-04-10 17:24:27 · 1480 阅读 · 2 评论 -
【C++】C++入门篇,初识C++----第一个C++结构,C++关键字,命名空间,C++的输入输出,缺省参数【图文详解】
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言 应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。原创 2024-02-23 18:21:37 · 1253 阅读 · 0 评论