C++
文章平均质量分 78
C++
KKK3号
欢迎来到我的博客,这是命运石之门的选择吧φ(゜▽゜*)♪
展开
-
【C++】函数对象
基本概念:我们将重载了小括号 ( ) 的类称为函数对象,也称为仿函数。因为它在使用小括号时,类似于调用函数的操作,所以称为仿函数。但是我们要知道,函数对象本质上还只是一个类,它并不是一个真正的函数。仿函数的特点:1.仿函数可以有自己的状态;下面的类Func中我们可以利用count来记录类的调用次数,这就可以记录仿函数的状态;2.仿函数可以作为函数参数传递;下面的函数test01中调用test02,我们就可以将仿函数作为参数传递给test02,并且我们可以依此来在test02中调用之前原创 2022-06-18 20:39:51 · 541 阅读 · 0 评论 -
【C++】STL常用算法
这篇博客主要用来记录学习到的STL中的常用算法和它们的使用方法。目录遍历算法:1.for_each2.transform查找算法:1.find2.find_if3.adjancent_find4.binary_search5.count6.count_if排序算法:1.sort2.random_shuffle3.merge4.reverse拷贝和替换算法:1.copy2.replace3.replace_if4.swap算术算法:1.accumulate2.fill集合算法:1.set_intersecti原创 2022-06-03 08:55:11 · 101 阅读 · 0 评论 -
【C++】list容器、set容器&map容器
目录list容器:基本概念:相似操作:构造函数:大小操作:赋值操作:交换操作:查找和删除操作:存取操作:排序和反转操作:set/multiset容器基本概念:构造函数和赋值操作:大小和交换操作:插入和删除操作:查找和统计操作:对组:set容器和multiset容器的区别:map容器赋值与构造函数:获取大小和交换操作:插入和删除操作:查找和计数:list容器:基本概念:list容器的数据存储结构是链表.原创 2022-05-24 11:41:56 · 1085 阅读 · 0 评论 -
【C++】deque容器、stack容器&queue容器
deque容器deque容器的定义:deque容器与vector容器类似,它可以看成一个数组,只不过vector容器的数组是一个单端的数组,只能进行尾部扩展添加;而deque容器是一个双端数组,它可以同时从两个方向向外扩展。而因为vector容器只能向一个方向进行扩展,所以对其进行头端插入需要移动整个容器内的元素,这样的效率低,所以人们增加一个容器deque,它可以从头部进行向外扩展,这样可以提高头部插入的效率。构造函数:deque的构造函数与vector的类似,都是有一个默认构造,两个原创 2022-05-21 20:36:11 · 234 阅读 · 0 评论 -
【C++】string容器&vector容器
string容器基本概念:string就是C++中的字符串类型,它的本质还是一个类,它封装了一个char*类型的指针。就像我们C语言中用字符指针来维护字符串;C++中用封装好的类string来维护字符串类型。构造函数:string容器可以有4种构造函数的使用方法:1.调用无参构造:直接在字符串类型后面定义一个常量字符串;2.调用有参构造:第一个参数传递字符串字符个数,第二个参数传递字符。可以构造重复字符字符串;3.调用拷贝构造:直接往字符串类型里传一个字符串类型变量;4.调用原创 2022-05-21 09:58:54 · 1487 阅读 · 0 评论 -
【C++】STL初识
STL背景和定义:STL是标准模板库(Standard Template Library,STL)。STL是为了增强代码的复用性而创建的一套数据结构和算法的标准模板库,STL里的代码几乎都是模板。STL分类:STL三大分类:STL广义上可以分为:迭代器,容器和算法,其中迭代器是作为连接算法和容器的桥梁。容器:容器就是存放数据的一种数据结构,常用存放数据的数据结构有:数组、链表、栈、队列、树、映射表、集合等。容器可以具体细分为:序列式容器和关联式容器;序列式容器就是注重值的排序原创 2022-05-19 15:42:15 · 206 阅读 · 0 评论 -
【C++】函数模板&类模板
模板的概念:C++除了面向对象编程的编程思想,还有一种编程思想就是泛型编程,泛型编程的具体例子就是模板。所谓模板,就是一个通用的类型,我们可以向模板传递不同的数据类型,从而得到不同的具体类型。C++中提供的模板有函数模板和类模板;函数模板:函数模板定义:函数模板的作用就是将函数的数据类型参数化,什么意思,就是我们平常写的函数都是具体有形参类型,返回类型,里面具体数据类型的。类型参数化可以在我们写函数时将这些数据类型变成未知的变量,从而得到一个函数模板,我们可以根据传入不同的数据类型得到不同.原创 2022-05-18 17:59:50 · 2842 阅读 · 2 评论 -
【C++】文件操作
文本文件操作:C++中文件类型有两种:文本文件和二进制文件文本文件是由字符的ASCII码值的形式存储;二进制文件是由二进制数据形式存储。文件输出操作流程:1.包含头文件<fstream>2.对象的建构:文件操作的类有三种:ofstream--只写、ifstream--只读、fstream--可读可写。我们随后根据需要创建一个对象:例如输出流对象ofs的创建 ofstream ofs;3.打开文件:这里打开文件的操作是使用函数open,具体语法是:对象名+ope原创 2022-05-15 20:58:10 · 1840 阅读 · 0 评论 -
【C++】多态
多态的定义:首先我们先来了解一下百度百科中定义的多态:指为不同数据类型的实体提供统一的接口。多态类型可以将自身所支持的操作套用到其它类型的值上。计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。即对于不同的实现方式有统一的入口,进入入口后可以自行选择不同的实现方式,不同于以往一个入口对应一种实现方式。C++中多态也具体分为两种:静态多态和动态多态静态多态实现于函原创 2022-05-14 22:00:50 · 724 阅读 · 0 评论 -
【C++】继承
继承的定义:当我们要写多个类时,如果一个类A中需要包含另外一个类B的属性,我们可以用到继承的操作,让A继承B的属性,即会让A增多一些B中才有的属性,继承后A中有B的属性,同时A中也会有一些自己增加的属性。A称为子类,派生类;B称为父类,基类。使用继承可以避免很多重复的代码,可以有效减少代码冗余。继承的语法是:class + 派生类 + 继承方式 + 父类下面是一个例子:父类的成员,子类通过继承后也可以增加对应的成员。class Fath{public: void Output2(原创 2022-05-14 13:56:56 · 547 阅读 · 0 评论 -
【C++】运算符重载
加号运算符重载对于一般数据类型的数据运算,计算机是可以进行运算的,但是如果操作数是一些我们自己定义的数据类型,那么计算机就不知道怎么处理了,这时候就需要我们自己写个运算符重载的函数,对运算符进行重载,说直白点,就是手动添加一种自定义类型运算方式。举个例子:我们创建一个类,这个类有两个成员变量。class Info{public: int a; int b;};int main(){ Info Exp1; Info Exp2; Info Exp3; Exp1.a =原创 2022-05-12 19:35:02 · 392 阅读 · 0 评论 -
【C++】友元
友元的定义:友元定义在类外面的一种函数或者类,友元不是成员函数,但是友元可以对某个类里面私有成员进行访问。要想友元获得访问某个类私有成员的权限,我们需要利用关键字friend并且在对应的类内进行声明。友元有三类:全局函数、成员函数、类全局函数做友元:具体语法:class 类名+{friend +友元声明 }class Info{ friend void Visit_id();//关键字friend+函数声明 Info(int id) { this->id = id;原创 2022-05-12 13:28:19 · 230 阅读 · 0 评论 -
【C++】对象模型和this指针
类与对象的内存空类的内存空间:首先,一个开辟了但什么都不放置的类的大小是1,因为即使我们什么都不放置,系统还是会默认给这个类开辟一个独特的内存空间以区分不同的类,这个默认的空间大小就是1。具体我们可以用下面的代码来测试一下:class Info{public: ;};int main(){ Info P; cout << sizeof(P) << endl; return 0;}毫无疑问,最后得到的结果就是1:成员属性与成员函数原创 2022-05-08 17:00:21 · 292 阅读 · 0 评论 -
【C++】对象初始化和清理
对象的初始化和清理:首先,我们创建完一个类后,当我们需要对类进行初始化;而当我们完成工作后,需要对类进行清理。这些工作,分别需要调用构造函数和析构函数。构造函数和析构函数的定义与特点:构造函数:1.作用:主要作用于对创建的对象成员属性进行初始化;2.语法:类名+()+{}3.注意事项:构造函数没有返回值,但不需要写void;构造函数函数名与类名一样;构造函数可以有形参,可以发生重载;构造函数只会调用一次,且会自动调用;析构函数:1.作用:主要作用于在对象销毁前对其进行清理;2.语法原创 2022-05-08 10:15:32 · 558 阅读 · 0 评论 -
【C++】类和对象&封装
C++面向对象三大特征:多态、继承、封装对象与类:对象:C++中认为万事万物都可以看作一个对象,而对象具有两个特征:属性和行为。属性:属性指的是对象具有的性质,例如将书看为一个对象,那么书具有的属性就是内容、目录、出版社、书名行为:行为就是对象的可以进行的操作、动作,如书可以被翻、书可以被撕、书可以被看。类:具有相同性质的一类对象就称为类封装封装是将对象的属性和行为当作一个整体,用这个整体来表现对象的性质。一般来说,封装的对象属性和行为缺一不可。通过封装,我们可以得到具有相同性质的一组对象,即原创 2022-05-06 13:04:29 · 527 阅读 · 0 评论 -
【C++】函数
函数1.函数的默认参数:如下,我们可以给函数形参列表的形参赋予初始值,有了这个初始值,我们也可以不用传递实参!而当这个初始值和实参不同时,还以实参为主;int Add(int a=100, int b=100){ return a + b;}int c = Add();形参列表中前一位被赋予初始值,那么后面每一位都要赋予初始值(即下图中不能a有初始值而b没有)。注意:函数的声明和调用不能同时有默认参数。//错误!int Add(int a = 10, int b = 10);int原创 2022-04-29 20:21:24 · 885 阅读 · 0 评论 -
【C++】内存分区&引用
内存分区:首先我们要了解,内存区域大概分为四个区域:1.代码区:这里主要存放我们写的代码的二进表达式,即CPU可以看懂的机械指令。这个区域有两个特征:只读和共享;前者可以保证代码的不会被随意修改;后者可以保证相同代码多次阅读不需要创建多个副本。2.全局区:这里主要存放的是静态的变量、全局变量、常量等;这里的常量可以细分为字符串常量和全局常量,而局部常量(const修饰的在main函数内部的常变量)。int a = 10;//全局变量const int b = 10;//全局常量int mai原创 2022-04-28 22:50:06 · 1152 阅读 · 0 评论 -
【C++】序
1.数据类型:C++中有许多和C语言相似的数据类型,例如int、char、double…等等的数据类型,这些数据类型的使用和性质与C语言也大同小异。但在C++中也存在很多不同于C语言的数据类型:1.字符串类型:在C语言中,没有单独的字符串类型,字符串都是存放在数组中的,用的时候直接调用数组。 char str1[] = "abcdef";而在C++中,我们多了一个类型,就是字符串类型:string。有了这种类型,我们就可以更加简单地去创建一个字符串了:string str2 = "abcde原创 2022-04-28 19:19:49 · 926 阅读 · 0 评论