![](https://i-blog.csdnimg.cn/direct/2a922d9b7cf743a4b93e89516f214c4f.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 94
C++学习记录
青旋.
这个作者很懒,什么都没留下…
展开
-
C++:红黑树
/颜色enum colorRED,BLACK//红黑树节点的定义color _col;//构造函数,_kv(kv),_col(RED){}在节点的定义中,为什么要将节点的默认颜色给成红色的?新插入节点的颜色只会影响性质3或者性质4(新插入的节点不是根节点的时候),如果新插入的节点是黑色的节点,那么一定会破坏性质4,破坏性质4要想让红黑树平衡最坏的情况需要将整颗树的节点都动一遍,很难维护。原创 2024-06-06 22:30:00 · 716 阅读 · 0 评论 -
C++:AVL树
int _bf;//平衡因子//AVL树并没有规定必须要选择设计平衡因子,只是一个实现的选择,方便控制//构造函数:_kv(kv), _bf(0){}原创 2024-06-06 21:30:00 · 604 阅读 · 0 评论 -
C++:map和set封装
有了以上推论,我们可以对节点定义进行改变//改变红黑节点的定义,使用更高维度的泛型T _data;color _col;//构造函数,_col(RED){}这里使用T来标识数据类型,因为节点可能是K类型的(set传过来的),也可能是pair类型的(map传过来的)原创 2024-06-06 23:30:00 · 763 阅读 · 0 评论 -
C++:map和set
map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的 内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型 value_type绑定在一起,为其取别名称为pair: typedef pair<const Key, T> value_type;在内部,map中的元素总是按照键值key进行比较排序的。原创 2024-06-06 16:39:02 · 652 阅读 · 0 评论 -
C++:二叉搜索树
关于数据结构中的树,想必都不会很陌生,今天,主要给大家一起学习搜索二叉树(BST)前面,我们掌握学习过二叉树的三种遍历方式(前序,中序,后序的递归版本),以及我们实现过顺序结构的树(堆),前面的树在储存数据方面,并没有多大的意义,而今天所说的二叉搜索树在数据存储方面就有了很大的意义。原创 2024-06-06 15:56:51 · 887 阅读 · 0 评论 -
C++:多态
多态的构成条件多态是不同继承关系的类对象,去调用同一函数,产生不同的行为(基类对象和派生类对象去调用同一函数所产生的效果不同)。1.被调用的函数必须是虚函数,且必须完成虚函数的重写。2.必须通过基类的指针或者引用去调用虚函数。public:cout << "抢到五元钱" << endl;cout << "抢到五角钱" << endl;Student s;Print(p);//调用父类的BuyTicketPrint(s);原创 2024-05-15 16:23:10 · 518 阅读 · 0 评论 -
C++:继承
Person是父类,也称作基类。Student是子类,也称作派生类。子类以public方式继承父类public继承方式下基类中public和protected修饰的成员在子类中的权限没有发生变化基类中private修饰的成员在子类中不能直接被访问(不可见)那么我们在设计类的时候访问权限的设置就可以用如下的考虑方式:成员如果想要在类外被访问,将其设置为public如果成员不想在类外直接被访问,但是要在子类中直接被访问,可以将其设置为protected。原创 2024-05-15 15:14:55 · 964 阅读 · 0 评论 -
C++:STL-容器适配器-优先级队列
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作。原创 2024-05-09 15:57:18 · 742 阅读 · 1 评论 -
C++:STL-vector
vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2024-05-09 14:49:34 · 591 阅读 · 1 评论 -
C++:STL-string
1.字符串时表示字符序列的类。2.标准的字符串类提供了对此类对象的支持,其接口累死与标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3.string类是使用char(即作文他的字符类型,使用他的默认char_traits和分配器类型)4.string类是basic_string模版类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作文basic_string分默认参数(根于更多漫步信息参考basic_string)。原创 2024-05-09 13:39:01 · 1007 阅读 · 1 评论 -
C++:模板(初阶)
与函数模板的定义形式类似,类模板也是使用template关键字和尖括号“<>”中的模板形参进行说明,类的定义形式与普通类相同。原创 2024-04-11 00:15:54 · 878 阅读 · 1 评论 -
C/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-04-10 22:17:12 · 1523 阅读 · 1 评论 -
C++:类与对象(二)
如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6 个默认成员函数。构造函数是一个特殊的成员函数,名字与类名相同 , 创建类类型对象时由编译器自动调用 ,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。其特征如下:1. 函数名与类名相同。2. 无返回值。3. 对象实例化时编译器自动调用对应的构造函数。4. 构造函数可以重载。原创 2024-04-10 20:55:47 · 654 阅读 · 1 评论 -
C++:类与对象(三)
本来是用2022构造一个临时对象Date(2022),再用这个对象拷贝构造d2,但是C++编译器在连续的一个过程中,多个构造会被优化,合二为一,所以这里被优化为直接构造。在类和对象阶段,一定要体会到,类是对某一类实体(对象)来进行描述的,描述该对象具有那些属性,那些方法,描述完成后就形成了一种新的自定义类型,才用该自定义类型就可以实例化具体的对象。而此刻这个日期类也发生了隐式类型转换,本来整形和日期类没有任何关系,但是我们写的类支持一个单参数的构造函数后,整形就可以构造一个日期类的对象。原创 2024-04-10 21:35:13 · 809 阅读 · 1 评论 -
C++:类与对象(一)
class为定义类的关键字,Name为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员,类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数。将类的声明和定义全部放在类中定义在头文件中放类的声明,在源文件中放类的定义。原创 2024-03-27 14:20:30 · 602 阅读 · 0 评论 -
C++:基础篇
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。面向对象程序设计是一种新的程序设计范型。程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。原创 2024-03-27 13:13:49 · 722 阅读 · 0 评论