C++
介绍C++的语法以及STL容器以及使用C++实现一些常用的数据结构。
XiaoCCCCCCCCCCCCCCC
这个作者很懒,什么都没留下…
展开
-
C++模拟实现二叉搜索树
二叉搜索树又称二叉排序树,(1)若它的左子树不为空,则。(2)若它的右子树不为空,则。(3)它的。(4)二叉搜索树,具体看使用场景定义。如下图,左边是不支持插入相等的值,右边支持插入相等的值。原创 2024-10-08 15:28:01 · 852 阅读 · 0 评论 -
C++多态、虚函数以及抽象类
多态是⼀个继承关系的下的类对象,去调⽤同⼀函数(虚函数),产⽣了不同的⾏为。⽐如Student继承了Person。Person对象买票全价,Student对象优惠买票。原创 2024-10-05 13:29:37 · 1324 阅读 · 0 评论 -
C++中的继承、多继承、菱形继承以及继承和组合
如下图,Person是基类,也称作⽗类。Student是派⽣类,也称作⼦类。原创 2024-10-04 15:50:08 · 1085 阅读 · 0 评论 -
C++模板进阶
一个程序(项目)又若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译。3.2模板的分离编译// a.h// a.cppint main()Add(1, 2);return 0;c/c++程序要运行,一般要经历以下步骤:预处理 -> 编译 -> 汇编 -> 链接。编译是对程序按照语言特性进行词法,语法,语义分析,错误检查无误后生成汇编代码,注意头文件不参与编译,编译器对工程中的多个源文件是分离开单独编译的。原创 2024-10-03 21:13:03 · 935 阅读 · 0 评论 -
C++仿函数的介绍以及priority_queue的介绍和模拟实现
仿函数的本质是一个类模板,只是这个类重载了operator(),所以当使用一个它的对象时看起来像使用和函数一样,所以被称为仿函数。int b = 10;return 0;自定义类型需要使用仿函数进行比较时,需要在自定义类型里面提供<和>等比较运算符的重载。原创 2024-10-02 16:54:15 · 1376 阅读 · 0 评论 -
C++中stack和queue的模拟实现
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口。如上图,需要将两个插口的插头转换为插座能使用的三个插口的插头,就需要一个适配器进行转换,适配器也可以叫做转换器。1.2STL标准库中stack和queue的底层结构虽然stack和queue中也可以存放元素,但是STL中并没有将其划分在容器的行列,而是将其称为容器适配器,原创 2024-10-02 15:30:52 · 960 阅读 · 0 评论 -
C++中list类的使用及模拟实现
C++中的list容器底层是一个。具体结构参考中双向链表的结构。原创 2024-09-30 17:46:49 · 1255 阅读 · 0 评论 -
C++中vector的模拟实现
vector的实现和string其实比较类似,了解vector的功能可以参考和,对比string可以参考。原创 2024-09-27 15:15:55 · 1123 阅读 · 0 评论 -
C++中vector类的使用
C++中的vector对应与C语言中的顺序表,底层还是通过数组来存储数据的。可以参考。vector类的接口我按照进行介绍,这里只进行常用接口的介绍,其他接口、类中的函数参数和函数重载若有需要请参考该网址,下列介绍就不一一列出了。vector的接口和string的接口很相似,可以参考进行对比。原创 2024-09-25 19:11:26 · 910 阅读 · 0 评论 -
C++中string类的模拟实现
这里首先先清除s中原有的数据,然后在栈里面开一个256大小的buff(为了减少扩容的次数).这里用get()函数一个一个读取输入的字符,如果用输入运算符的话会忽略输入的空格和换行符.当一个buff满了之后拷贝到s中,跳出循环后如果buff中还有遗留的数据,则全部拷贝到s中.尾插一个字符串.这里扩容保持一个对齐的原则,如果需要的空间大于原来空间的两倍,则需要多少开多少,如果小于原来的两倍,则开2倍.字符串的关系运算符与C语言中的compare()类似,这里直接复用库里面的compare()函数.原创 2024-09-19 18:28:58 · 1206 阅读 · 0 评论 -
C++中string类的使用
目录1.auto和范围for1.1auto关键字1.2范围for2.string类常用接口说明2.1默认成员函数2.1.1构造函数(constructor)2.1.2赋值运算符重载(operator=())2.2string类对象的访问及遍历操作(Iterators and Element access)2.3string类对象的容量操作(Capacity) 2.3.1利用reserve提高插入数据的效率2.4string类对象的修改及相关操作(Modifiers and String operations原创 2024-09-16 16:06:06 · 1277 阅读 · 0 评论 -
C++STL简介
在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。由Silicon Graphics Computer Systems。采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。由P. J. Plauger。由Rouge Wage。采用,不能公开或修改,可读性一般。,不仅是一个可复用的组件库,而且。原创 2024-08-27 21:07:20 · 138 阅读 · 0 评论 -
C++模板初阶
使用函数重载的缺点:(1)重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现就需要用户自己增加对应的函数。(2)代码的可维护性比较低,一个出错可能所以的重载均出错。泛型编程: 编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。C++中的模板就能实现这样的泛型编程:2函数模板。原创 2024-08-27 20:04:09 · 797 阅读 · 0 评论 -
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-27 17:06:40 · 631 阅读 · 0 评论 -
C++类和对象(5)--日期类的实现
下面通过实现日期类来复习使用类和对象的知识,其中每个接口的讲解和知识点的分析写在了代码中的注释中。原创 2024-08-27 12:49:57 · 471 阅读 · 0 评论 -
C++类和对象(4)
(3)内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地⽅都⽤不了。原创 2024-08-19 17:16:41 · 712 阅读 · 0 评论 -
C++类和对象(3)
所以这⾥⾃定义类型传值传参和传值返回都会调⽤拷⻉构造完成。原创 2024-08-19 15:52:30 · 938 阅读 · 0 评论 -
C++类和对象(2)
⽆论是否显⽰写初始化列表,每个构造函数都有初始化列表;⽆论是否在初始化列表显⽰初始化,每个成员变量都要⾛初始化列表初始化;原创 2024-08-17 14:48:42 · 1380 阅读 · 0 评论 -
C++类和对象(1)
(1)class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 (2)为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例。(3)C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是 struct中可以定义函数,⼀般情况下我们还原创 2024-08-13 15:30:21 · 835 阅读 · 0 评论 -
C++入门基础
(1)定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。如上述代码中xiaoc这个命名空间。(2)namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以上⾯的rand不在冲突了。(3)C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。原创 2024-08-13 14:20:44 · 1024 阅读 · 0 评论