C++
文章平均质量分 95
Clumsy、笨拙
这个作者很懒,什么都没留下…
展开
-
【C++初阶】第十三篇:模板进阶(非类型模板参数、模板的特化以及模板的分离编译)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。增强了代码的灵活性。模板会导致代码膨胀问题,也会导致编译时间变长。出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2023-05-16 16:25:54 · 751 阅读 · 2 评论 -
【C++初阶】第十二篇:priority_queue的使用与模拟实现
priority_queue文档介绍优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中的元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。默认情况下priority_queue是大堆。方式一: 使用vector作为底层容器,内部构造大堆结构。方式二: 使用vector作为底层容器,内部构造小堆结构。方式三: 不指定底层容器和内部需要构造的堆结构。原创 2023-05-13 20:20:32 · 700 阅读 · 9 评论 -
【C++初阶】第十一篇:stack和queue的使用与模拟实现
stack的文档介绍stack是一种容器适配器,专门用于具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。原创 2023-05-13 16:30:36 · 570 阅读 · 0 评论 -
【C++初阶】第十篇:list模拟实现
T _data;} };// 同一个类模板实例化出的两个类型 // typedef __list_iterator<T, T&, T*> iterator;} // const iterator cit // *cit // ++cit 这样的话,可以解引用,但是不能++ /*const T& operator*() constreturn tmp;return tmp;} };原创 2023-04-09 23:03:51 · 590 阅读 · 18 评论 -
【c++初阶】第九篇:vector(常用接口的使用 + 模拟实现)
vector是表示可变大小数组的序列容器。vector就像数组一样,也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。当新元素插入,vector需要重新分配大小时,其做法是,分配一个新的数组,然后将全部元素移到这个数组当中,并释放原来的数组空间。vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因此存储空间比实际需要的存储空间一般更大。原创 2023-04-09 18:46:19 · 1085 阅读 · 11 评论 -
【C++初阶】第八篇:string的模拟实现
注: 为了防止与标准库当中的string类产生命名冲突,模拟实现时需放在自己的命名空间当中构造函数设置为缺省参数,若不传入参数,则默认构造为空字符串。字符串的初始大小和容量均设置为传入C字符串的长度(不包括’\0’)拷贝构造函数在模拟实现拷贝构造函数前,我们应该首先了解深浅拷贝:很明显,我们并不希望拷贝出来的两个对象之间存在相互影响,因此,我们这里需要用到深拷贝。下面提供深拷贝的两种写法:写法一:传统写法传统写法的思想简单:先开辟一块足以容纳源对象字符串的空间,然后将源对象的字符串拷贝过去,接着把源原创 2023-04-05 16:36:13 · 594 阅读 · 3 评论 -
【C++初阶】第七篇:string的基础接口使用
重载后的关系运算符支持string类和string类之间的关系比较、string类和字符串之间的关系比较、字符串和string类之间的关系比较。我们知道,使用>>进行输入操作时,当>>读取到空格便会停止读取,基于此,我们将不能用>>将一串含有空格的字符串读入到string对象中。string类中对+=运算符进行了重载,重载后的+=运算符支持string类的复合赋值、字符串的复合赋值以及字符复合的赋值。getline函数将从is中提取到的字符存储到str中,直到读取到分隔符delim或换行符’\n’为止。原创 2023-04-04 14:09:53 · 752 阅读 · 1 评论 -
【C++初阶】五、内存管理
一、动态申请单个类的空间//申请 delete p1;//销毁//申请 free(p2);//销毁二、动态申请多个类的空间//申请 delete [ ] p3;//销毁//申请 free(p4);//销毁在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。原创 2023-03-25 20:07:33 · 883 阅读 · 8 评论 -
【C++初阶】六、模板初阶(函数模板+类模板)
template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };public :cout原创 2023-03-22 01:57:19 · 412 阅读 · 7 评论 -
【C++初阶】四、类和对象(下)
若一个类中存在类对象时,且该类对象的类没有默认构造函数。那么我们在实例化该类对象时就需要传参对其进行初始化,所以实例化没有默认构造函数的类对象时必须使用初始化列表对其进行初始化。原创 2023-03-21 01:59:25 · 751 阅读 · 12 评论 -
【C++初阶】三、类和对象(中)
文章目录1.类的6个默认成员函数2. 构造函数2.1 概念2.2 特性3.析构函数3.1 概念3.2 特性4. 拷贝构造函数4.1 概念4.2 特征5.赋值运算符重载5.1 运算符重载5.2 赋值运算符重载6.日期类的实现7.const成员8.取地址及const取地址操作符重载1.类的6个默认成员函数2. 构造函数2.1 概念2.2 特性3.析构函数3.1 概念3.2 特性4. 拷贝构造函数4.1 概念4.2 特征5.赋值运算符重载5.1 运算符重载5.2 赋值运算符重载6.日期原创 2022-11-20 22:41:11 · 5874 阅读 · 14 评论 -
【C++初阶】二、类和对象(上)
/ 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{ }中为类的主体,注意类定义结束时后面分号。类中的元素即变量和函数都称为类的成员:类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数class和struct。原因是C++兼容C里结构体的用法,同时结构体(struct)在C++中也升级成了类,类名可以直接作类型使用。类与结构体不同的地方在于,类中不仅可以定义变量,还可以定义方法或称函数。原创 2022-03-07 19:15:39 · 1369 阅读 · 11 评论 -
【C++初阶】一、C++入门基础(详细总结)
C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字(随自己定义),然后接一对{}即可,{}中即为命名空间的成员。注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。原创 2022-03-01 23:02:09 · 15852 阅读 · 26 评论