自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 【C++】哈希表算法习题

🎆个人主页:夜晚中的人海今日语录:只有经历地狱般的磨练,才能炼出创造天堂的力量。

2025-11-14 15:29:12 829 22

原创 【C++】链表算法习题

🎆个人主页:夜晚中的人海今日语录:不经历风雨,长不成大树,不受百炼,难以成钢。

2025-11-11 16:28:16 949 21

原创 【C++】分治-归并排序算法习题

🎆个人主页:夜晚中的人海今日语录:人一生的价值,不应该用时间去衡量,而是用深度去衡量。

2025-11-09 16:39:50 1120 16

原创 【C++】分治-快速排序算法习题

文章摘要: 本文介绍了四道基于快速排序思想的算法题解。1️⃣颜色分类:使用三指针法将数组划分为0、1、2三个区域。2️⃣排序数组:通过随机选择基准值优化快排,将数组分为三块区域递归处理。3️⃣第K个最大元素:在分区后通过计算各区域元素数量定位目标值。4️⃣最小K个数:同样采用三区域划分策略快速定位结果。所有解法均利用了快速排序的高效分区思想,时间复杂度接近O(n)。(149字)

2025-11-04 20:43:28 692 27

原创 【C++】模拟算法习题

🎆个人主页:夜晚中的人海今日语录:有风有雨是人生的常态,迎难而上才能逆风翻盘。

2025-11-01 16:44:55 953 26

原创 【C++】位运算算法习题

🎆个人主页:夜晚中的人海今日语录:梦想不是空口无凭的大话,而是在寂静的奋斗里努力生长的果实!

2025-10-30 16:24:15 838 22

原创 【C++】前缀和算法习题

2.用一个for循环枚举每一个可能是中心点的下标,如果该下标的前缀和和后缀和都相等,则返回;循环结束后若还是没找到,则返回-1。

2025-10-26 16:42:19 1231 25

原创 【C++】二分查找算法习题

在排序数组中查找元素的第一个和最后一个位置1.我们可以采用二分左边界和右边界的方法2.在二分左边界时,我们可以根据中间点mid的落点来进行更新,如果中间值mid的值小于目标值,就让left指向mid + 1的位置,否则就让right指向mid的位置(注:不能指向mid - 1,有可能mid是最终结果3.二分右边界时,同样也是根据mid的落点来进行判断,如果mid的值大于目标值,则让right指向mid - 1的位置,否则让left指向mid(注:同样不能指向mid + 1,mid可能是最终结果。

2025-10-23 12:20:11 898 30

原创 【C++】滑动窗口算法习题

🎆个人主页:夜晚中的人海今日语录:人生就是这样,要耐的住寂寞,才守得住繁华。

2025-10-20 11:58:30 1387 23

原创 【C++】使用双指针算法习题

🎆个人主页:夜晚中的人海今日语录:用乐观的心态迎接困难,因为能打败你的,只有你自己。

2025-10-19 16:35:36 1068 21

原创 【C++】智能指针介绍

本文介绍了C++中RAII机制和智能指针的概念、使用及实现原理。RAII(资源获取即初始化)通过对象生命周期管理动态资源,避免泄漏。智能指针在此基础上重载运算符,提供类似指针的访问方式。C++标准库提供了四种智能指针:auto_ptr(C++98,已弃用)、unique_ptr(禁止拷贝,支持移动)、shared_ptr(支持拷贝和移动)和weak_ptr(解决循环引用)。文章详细讲解了它们的特性和使用场景,并通过代码示例展示了如何自定义删除器以支持不同资源释放方式。最后,模拟实现了auto_ptr和uni

2025-10-10 16:05:05 1150 25

原创 【C++】异常介绍

C++异常处理机制详解 异常是C++中处理错误的重要方式,通过throw、try、catch三个关键字实现。当函数抛出异常时,程序会暂停当前执行,沿着调用链查找匹配的catch子句,这个过程称为"栈展开"。异常捕获遵循最近匹配原则,可使用catch(...)捕获任意异常。异常安全是重要考量,需要注意资源泄漏问题。C++11引入了noexcept关键字声明不抛异常的函数。异常处理优点在于能清晰展示错误信息,但缺点是可能打乱程序流程并导致内存泄漏。合理的异常处理需要权衡其优缺点,在适当场景下

2025-10-01 23:36:27 1091 33

原创 C++11(2)

摘要 本文介绍了C++11中的可变模板参数、新的类功能、STL容器变化以及lambda表达式等特性。主要内容包括: 可变模板参数的语法和使用方法,如参数包展开的递归方式和逗号表达式方式,以及emplace系列接口的优势。 新增的默认移动构造函数和移动赋值运算符,以及如何使用default和delete控制默认函数的生成。 STL容器新增了unordered_map和unordered_set等容器,并提供了与右值引用相关的push/insert/emplace系列接口。 lambda表达式的概念、语法规则和

2025-09-27 00:40:53 1016 27

原创 C++11(1)

C++11核心特性解析 C++11作为现代C++的起点,引入了多项革命性特性: 列表初始化:统一初始化语法,支持内置/自定义类型,新增std::initializer_list简化容器初始化。 右值引用:通过&&标识,实现移动语义(移动构造/赋值),解决深拷贝性能问题,完美转发临时对象资源。 类型系统增强:细分值类型为左值、纯右值、将亡值,引入引用折叠规则(如T&& &&折叠为T&&)。 应用场景:优化STL容器构造、函数返回值处理,提升资源转

2025-09-24 00:38:54 1151 25

原创 我的创作纪念日 ----- 第512天

这是一篇CSDN创作者的512天纪念文章摘要。作者回顾了从一名学习者成长为创作者的历程,分享了在创作期间收获的近2000名粉丝关注、读者互动以及结识的IT领域朋友。文章展示了作者解决链表问题的代码成就,并展望了未来进入大厂和持续创作优质技术文章的职业规划与创作愿景。全文以"锲而不舍"为精神指引,展现了作者在技术道路上的坚持与成长。

2025-09-19 18:16:31 541 23

原创 【C++】数据结构 --- 哈希表

本文主要介绍了哈希表的基本概念、哈希函数和哈希冲突处理方法。哈希是一种通过哈希函数建立关键字与存储位置映射关系的数据组织方式,负载因子反映了空间利用率与冲突概率的关系。文章详细讲解了直接定址法、除留余数法、乘法散列法等哈希函数,并分析了开放定址法(线性探测、二次探测、双重探测)和链地址法等冲突处理方法的特点及应用场景。通过示例展示了不同方法在实际应用中的具体实现过程,为理解哈希表的工作原理提供了全面的参考。

2025-09-19 00:42:50 1464 22

原创 【C语言】初阶数据结构相关习题(二)

🎆个人主页:夜晚中的人海今日语录:知识是从刻苦劳动中得来的,任何成就都是刻苦劳动的结果。——宋庆龄。

2025-05-15 18:39:43 2415 116

原创 【C语言】初阶数据结构相关习题(一)

🎆个人主页:夜晚中的人海今日语录:人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。——奥斯特洛夫斯基。

2025-05-06 13:22:51 2867 147

原创 【C语言】初阶算法相关习题(二)

个人主页:夜晚中的人海。

2025-04-28 13:30:02 2231 114

原创 【我的创作纪念日】 --- 与CSDN走过的第365天

个人主页:夜晚中的人海不积跬步,无以至千里;不积小流,无以成江海。-《荀子》

2025-04-22 21:09:15 896 89

原创 【C语言】初阶算法相关习题(一)

2.然后遍历两个数组,定义一个变量flag初始化为0,当找到相等元素时,将nums2[j]的值置为-1,目的是避免重复匹配,同时将flag置为1,表示找到相同元素。1.首先判断两个数组的长度谁大,根据较大值开辟一个数组result,用于存储相交时的结果,再定义一个变量k,用于记录结果数组中元素的个数。4.遍历输入字符串的每个字符,利用 str 数组记录字符的出现情况,并统计不同字符的数量,统计完后将改位置的值设为1,避免重复计算。

2025-04-22 13:22:46 1886 62

原创 【C语言】编译和链接详解

并且包含的头文件都被插入到.i文件中。所以当我们无法知道宏定义或者头文件是否包含正确的时候,可以查看预处理后的.i文件来确认。

2025-04-12 17:48:24 2791 85

原创 【C语言】整数和浮点数在内存中的存储

今天我们来讲一下整数和浮点数在内存中的存储方式以及大小端字节序的判断以及了解什么叫大小端,下面就一起来看看吧。

2025-04-03 17:50:55 1523 81

原创 【C语言】文件操作(详解)

磁盘(硬盘)上的文件是文件。但是在设计程序中,我们一般把文件分为两种:一是程序文件,另一个是数据文件。(从文件功能的角度进行分类)

2025-03-25 22:01:32 1501 89

原创 【C语言】内存函数详解

功能:从源空间的位置开始向后复制num个字节的数据到目标空间所指向的内存位置。该函数遇到 ‘\0’ 时并不会停下来如果目标空间和源空间有位置重叠时,复制的结果都是未定义的。功能:和memcpy最大的区别就是memmove函数处理的源内存块和目标内存块是可以重叠的。因此有内存重叠的部分就交给memmove函数来处理。功能:用来设置内存的,将内存中的值以字节为单位设置成想要的内容。功能:比较从ptr1和ptr2指针指向的位置开始,向后的num个字节。

2025-03-24 15:55:00 993 56

原创 【C语言】字符串函数详解

功能:将一个源字符串的内容完整拷贝到目标字符串中源字符串必须以 ‘\0’ 结束。会将源字符串中的 ‘\0’ 拷贝到目标空间。目标空间必须足够大,以确保能存放源字符串,否则就会发生报错。目标空间必须可修改,不能加const修饰。功能:将一个字符串连接到另一个字符串的末尾。源字符串必须以 ‘\0’ 结束。目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。目标空间必须有足够大,能容纳下源字符串的内容。目标空间必须可修改,不能加const修饰。

2025-03-22 11:34:47 1206 36

原创 【C语言】指针详解 ---- 看完让你对指针有着更深刻的认识

我们要知道,计算机在处理数据时,数据是是在内存中读取的。函数指针的定义:假设数组存储的是 int (*)(int ,int),首先有一个数组arr先与[ ]结合,然后数组存储的是函数指针:int(*arr[ ])(int,int),[ ]里填的是数组元素的个数。sizeof(arr)计算的是一个地址的大小而不是数组的大小,而函数参数的本质是指针,因此无法计算出数组的元素个数。我们就以整型指针举例进行指针加整数的操作:因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,我们就能找到后面的所有元素。

2025-03-18 13:41:47 1784 62

原创 【C语言】------ 实现扫雷游戏

扫雷游戏,相信大家对此并不陌生。这次我们使用C语言实现扫雷游戏的目的就是为了巩固我们之前所学习的知识,将我们的所学的知识串联起来,加深我们对知识的理解。

2025-03-08 17:28:22 2940 54

原创 【C++】红黑树的底层原理以及实现

我们在前面的文章中提到了当一棵树退化成单支时导致性能和效率降低时,我们可以用AVL树来解决这一问题。但由于AVL树是一棵高度平衡的树,且每次修改树的结构时都要保证左右子树的高度差不超过1。因此如果需要一棵结构动态变化的二叉搜索树时,红黑树的作用就出来了。下面就来详细讲解一下有关红黑树的相关知识以及操作。

2024-10-24 00:23:48 1789 100

原创 【C++】map和set的介绍以及用法

我们来看看以下几个有关于set的要点:1.set是用来存储唯一元素的容器,且按照一定的顺序进行排列。2.set中不允许出现重复的元素,其本质是负责排序+去重。3.set在底层是用红黑树来实现的。4.set的比较默认按照小于进行。5.set的正向迭代器遍历为升序序列,反向迭代器为降序序列。6.在set类中的其内容可以进行删除,但不支持修改。7.set中查找某个元素的时间复杂度为logN。map是C++中STL的一个关联式容器,它是以键值对。

2024-10-12 23:48:56 1906 95

原创 【C++】AVL树的底层以及实现

优点:**1.查找效率高:**由于AVL树总是保持平衡,其高度相对较低,因此查找操作的时间复杂度为O(log2N),效率较高。AVL树的平衡性使得其结构相对稳定,不会出现极端不平衡的情况,从而保证了操作的稳定性和可靠性。AVL树在插入和删除节点时,可能需要通过旋转操作来保持树的平衡,比较复杂。在频繁插入和删除的场景下,AVL树需要不断地进行旋转操作来保持平衡,这就有可能导致性能降低。

2024-10-08 23:40:52 1859 95

原创 【C++】二叉搜索树的底层以及实现

找N左子树的值最大结点R(最右结点)或者N右子树的值最小结点R(最左结点)来替代N,因为这两个结点中任意⼀个放到N的位置,都满足二叉搜索树的规则。2.树不空,按二叉搜索树性质,插入的值比当前结点大时往右走,插入值比当前结点小时往左左,直到找到空位置时,插入新结点。3.如果支持插入相等的值,插入值跟当前结点相等的值可以往右走,也可以往左走,直到找到空位置,插人新结点。(注:替代N的意思就是将N和R的两个结点的值交换,转变成删除R的结点)若它的右子树不为空,则右子树上所有结点的值都大于等于根结点的值。

2024-09-22 15:56:01 2267 96

原创 【C++】多态的认识和理解

多态是⼀种继承关系的下的类对象,去调用同一函数,从而产生了不同的行为。例如:Student继承了Person,Person对象买票为全价票,而Student对象买票则为优惠票。

2024-09-18 17:23:28 2274 113

原创 【C++】priority-queue的底层原理及实现

首先在进入优先级队列的学习之前,我们需要先对优先级队列有一定的了解。优先级队列是容器适配器中的一种,元素在队列中的顺序是按照它们的优先级来排列的,而不是按照它们被插入的队列的顺序。这其实就是数据结构中的堆,其底层都是以数组存储的完全二叉树,下面就来详细了解一下priority-queue是如何进行使用的。Priority Queue(优先级队列) 是一种特别的数据结构,它为队列中的每个元素都分配了一个优先级。在这个队列里,元素并非按照被插入的顺序来排列,而是依据它们的优先级来排序。

2024-09-10 13:29:46 2197 112

原创 【C++】list底层的模拟实现

list是一个双向链表的容器,它可以在其内部中存储各种类型的元素,并且支持动态地添加、删除和修改元素。

2024-09-05 16:09:41 1769 78

原创 【C++】有关vector迭代器失效问题

那么如果当前位置的元素刚好就是最后一个元素时,当对其进行删除时,返回的位置则指向end(),而end()的位置并没有元素,那么当对其进行解引用时也会导致程序崩溃,因此编译器认为这样的操作并不安全,于是认为当删除完元素时,迭代器就应该按失效的方式处理,不再对其进行使用。过程:it一开始指向初始空间的元素,而再次进行尾插操作时,由于空间不够需要扩容,因此需要释放旧空间开辟新空间,但此时的it还是指向已经被释放的旧空间,已经成为野指针了,因此再循环当中对野指针进行解引用是就会导致程序崩溃。

2024-08-30 18:19:19 1874 85

原创 我的CSDN-----第128天创作纪念日

起初的我,是为了在学习代码的过程中通过写博客的方式来巩固自己的知识。后来在遇到不会的问题时可以在csdn上面查找,寻求一点思路,将学到的知识通过博客的方式呈现出来。每当发布一篇博客后,就会收到很多人的评论加关注,随着粉丝的增加,自己也有了创作的动力,也在创作过程中结识了许多创作出优质文章的作者,一起不断进步。即使学业繁忙,我也会合理分配时间,尽自己的能力范围内,去创作出优质的文章。希望在往后的创作日子里,能够不断提高自己的能力水平,创作出优质更加的文章,去帮助更多的人解决问题,努力学习,共同进步!

2024-08-24 23:50:27 1688 77

原创 【C++】vector的模拟实现

reserve函数是完成对对象空间进行扩容操作的,当插入的数据大于对象的空间时,则会进行扩容操作,如果插入的数据小于对象空间时,则不会进行任何操作。这里需要注意的是:在代码最后三行我们可以看出,此时的_start是指向新空间的起始位置,_finish如果想调用size()时,而。size函数是用来返回数据vector对象中的有效数据个数,capacity函数则返回vector对象的容量空间的大小。vector的begin是返回容器的_start的位置,end则返回容器的_finish的位置。

2024-08-22 17:21:00 1894 92

原创 【C++】string类的模拟实现

+_size;// 大于2倍,需要多少给多少,小于2倍按2倍扩//插入字符//挪动数据--end;++_size;//插入字符串--end;i < len;else// 如果len大于剩余字符长度,更新lenstring sub;i < len;i++)

2024-08-18 11:26:59 1463 82

原创 【C++】模板初阶

模板可以分为两种,分别是函数模板和类模板。class data(类模板名)// 类内成员定义。

2024-07-28 16:49:40 1366 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除