
C++学习之路
文章平均质量分 96
本专栏根据博主学习C++的路线,对C++各类知识点进行了详细的总结和说明
Forward♞
这个作者很懒,什么都没留下…
展开
-
C++ 位图 bitset
N是一个非类型模板参数,表示这个。原创 2025-03-16 21:13:02 · 575 阅读 · 0 评论 -
C++ unordered_map && unordered_set 模拟实现
移动之后,不为空,说明这个哈希桶(单链表)还没有走完,那么直接返回这个节点即可。下面,我们就通过之前写的基于开散列(哈希桶)的代码,来封装出一份简单的。因此,为了符合规范,我们需要对原先哈希表部分函数的返回值进行修改。,为第一个不为空的哈希桶中的第一个节点;移动之后,为空,说明这个哈希桶(单链表)已经走完了。的接口都是直接调用其内部封装的哈希表的接口。在上面的哈希表代码中,我们直接使用的就是。由于哈希表自己不知道存储的数据到底是。对于哈希表的迭代器,我们只需要关注。:表示要存放什么类型的数据。原创 2025-03-15 19:20:17 · 571 阅读 · 0 评论 -
C/C++哈希(散列)
哈希函数是哈希技术的核心,它是一个。原创 2025-03-14 16:26:40 · 760 阅读 · 0 评论 -
C++——红黑树
/定义一个枚举类,用于表示颜色enum ColorRED,BLACK//默认该红黑树的存储模型为key_value型//节点默默的颜色为红色: _kv(kv){}原创 2024-03-27 18:27:46 · 1051 阅读 · 0 评论 -
C++——AVL树
看到这里,相信大家已经对AVL树的结构和特点有了较为深刻的了解,对于AVL树的其他操作,例如删除节点erase(),这里不再讲述,如有兴趣大家可以自行研究。//bf为平衡因子,即[右子树高度 - 左子树高度]: _kv(kv){}public://找到插入位置else//连接新节点else//更新平衡因子,调节搜索二叉树的平衡elsebreak;elsebreak;原创 2024-03-17 13:20:35 · 934 阅读 · 1 评论 -
C++——搜索二叉树
本章思维导图:注:本章思维导图对应的.xmind和·.png文件都已同步导入至,可供免费查阅。原创 2024-02-21 19:02:57 · 963 阅读 · 1 评论 -
C++——多态
本篇所有的测试代码都是在VS2019的x86环境下运行的,所涉及的指针都是4字节指针。不同环境可能会有所不同。原创 2024-02-12 17:25:12 · 853 阅读 · 1 评论 -
C++——继承
派生类 : 继承方式 基类公有继承public、保护继承protected、私有继承private在日常使用中,一般只会使用public公有继承由于基类成员访问限定符和继承方式二者的相互影响,派生类在继承了基类成员后,继承成员的权限会发生这样的变化:类成员/继承方式public继承protected继承private继承基类的public成员派生类的public乘员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员。原创 2024-02-10 08:00:00 · 977 阅读 · 1 评论 -
C++泛型编程——模板
注:本章思维导图对应的和文件都已同步导入至资源在C++中,如果我们不借助库函数,要实现两个数据的交换函数,由于要考虑到数据类型的多样性,我们难免要将函数重载很多次,例如:函数的函数体基本相同,只有交换数据的类型不同,但就是由于这个小小的不同迫使我们产生很多冗余代码,使生产效率变得低下为了解决这一问题,C++就支持了泛型编程这一概念:在C++中,泛型编程就是靠模板来实现的基本格式为:基本格式为:例如:注意:用不同的类型使用函数模版生成一个具体的函数这一过程叫做函数模板的实例化,函数模板的实例化有以下两种方原创 2024-02-08 08:00:00 · 1476 阅读 · 1 评论 -
C++适配器——stack && queue
本章思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至,可免费查看。原创 2024-02-06 19:31:22 · 776 阅读 · 1 评论 -
C++——list的使用及其模拟实现
作为标准模板库中的容器,list同样也是一个类模板如果要定义一个list对象,就需要指定其存储的数据类型T。list原创 2024-01-28 11:32:30 · 1884 阅读 · 1 评论 -
C++——vector的使用及其模拟实现
是一个迭代器,其指向原始数据的某一个位置。但是如果要进行扩容操作,由上面的分析可以知道,如果要进行扩容,那么。因此,为了避免迭代器失效带来的影响,我们得遵循以下原则。vector的尾插就和顺序表的尾插一样,就是在最后面新增一个数据。的空间,再将原来的数据复制过来,最后再释放原来的空间。这种内置类型呢,难道它们也有自己的构造函数吗?答案确实如此,为了适应类和对象,我们可以认为。这种自定义类型好说,他们有构造函数,但如果。竟然在插入的时候就出问题了,这是为啥?可以看到,这段代码的逻辑是:先。原创 2024-01-20 22:34:05 · 1019 阅读 · 0 评论 -
C++STL——string类详解及其模拟实现
STL全称,译为下面展示STL的六大组件:本章,我们将对string部分常用的功能进行说明和使用,最后对string进行简单的模拟实现本章思维导图:注:本章思维导图已经同步导入至。原创 2023-11-27 15:44:01 · 1462 阅读 · 0 评论 -
C++——内存管理(new/delete使用详解)
所以C++才要新创建两个运算符。原创 2023-11-14 16:34:03 · 735 阅读 · 0 评论 -
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
但也不是说初始化列表就能完全替代函数体。因为有时候函数体需要进行检查等操作。原创 2023-11-07 20:04:00 · 224 阅读 · 0 评论 -
C++——类和对象之运算符重载
应该清楚,赋值实际上也是一种拷贝。浅拷贝又称值拷贝浅拷贝只是对成员变量值的简单复制,而不是复制指向的动态分配的资源(如堆内存)原对象和拷贝对象将共享相同的资源。深拷贝又称址拷贝相较于浅拷贝只是对成员变量值的简单赋值,深拷贝会复制对象的成员变量以及指向的资源,包括指针指向的数据这确保了原对象和拷贝对象拥有彼此独立但内容相同的资源副本。关于深浅拷贝更为清楚的解释请移步👉C++——拷贝构造既然拷贝分为深浅拷贝,那么我们的赋值运算符重载也应该分为值拷贝、址拷贝例如对于Date类,原创 2023-11-04 23:36:53 · 213 阅读 · 0 评论 -
C++——类和对象之拷贝构造
要知道如何正确的定义拷贝构造,就需要先对浅拷贝和深拷贝。原创 2023-11-01 00:03:03 · 236 阅读 · 0 评论 -
C++——类和对象(构造函数与析构函数)
构造函数没有返回值(不需要写void构造函数的函数名与类名相同构造函数支持函数重载构造函数可以没有形参,形参可以都是缺省参数,也可以不是缺省参数例如,对于Dateclass Datepublic ://方式一:_day = day;//方式二:Date()_day = 30;//方式三:_day = day;int _month;int _day;一般建议将构造函数的形参设置为全缺省参数析构函数的函数名为析构函数没有返回值。原创 2023-10-30 17:58:54 · 132 阅读 · 0 评论 -
C++——类和对象(了解面向过程和面向对象、初步认识类和对象、类大小的计算、this指针)
在C语言中,我们有struct类型,我们称之为结构体。int* st;int top;但是,C语言的结构体有如下的局限性定义结构体变量时,类型名太长。例如我们要定义上面的结构体类型的变量st1结构体内只能声明变量,而不能声明和定义函数可以在struct里面声明和定义函数。_top = 0;exit(-1);_st = tmp;//仅为了展示C++struct里面可以声明和定义函数//故其他功能不做展示int* _st;int _top;在C++中,我们就称用。原创 2023-10-26 21:49:11 · 212 阅读 · 0 评论 -
C++特性——auto关键字、范围for、指针空值nullptr
本篇是关于C++特性的最后一篇。在前面我们学习了C++引用、I/O流、inline内联函数等诸多特性。如果感兴趣,可以看看:👉C++特性——命名空间、I/O流以及缺省参数👉C++特性——引用与指针详解👉C++特性——inline内联函数在写代码时,我们常常会遇到定义变量时变量的类型名太长的情况,例如:我们发现,变量、的类型名实在是太长了,有没有什么办法解决呢?C++引入了这个关键字来解决这个问题。关键字可以自动识别变量的类型。例如:output:1.2 关于auto关键字的细节使用关原创 2023-10-24 13:40:09 · 233 阅读 · 0 评论 -
C++特性——inline内联函数
inline内联函数是C++专门针对C语言宏函数的缺陷而设计的。其既具有宏函数没有函数调用开销,所耗时间少的优点;同时也基本上解决了宏函数不安全、难以调试的缺点。其功能不可谓不强。然而内联函数也有较大的局限性:其只适用于代码简单、且频繁调用的函数。而对于递归、有大量循环的函数则不适用。内联函数只是对编译器的一个建议,到底才不采用取决于编译器。内联函数的声明和定义最好放在一起。原创 2023-10-21 20:26:58 · 284 阅读 · 0 评论 -
C++特性——引用与指针详解
(例如,如果。原创 2023-10-19 00:13:51 · 600 阅读 · 0 评论 -
C++特性——命名空间、I/O流以及缺省参数
可以认为,C++的语法和语义基本上包含了C语言的所有内容。二者之间的关系大致可以用下图表示:同时,C++在C语言的基础上引入了许多额外的特性和概念,下面,我们就来学习C++有而C语言没有的特性。原创 2023-10-14 11:17:06 · 224 阅读 · 0 评论