- 博客(62)
- 收藏
- 关注
原创 【C++算法/学习】位运算详解
✨🌏📃:在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。:由 0 和 1 两个数码来表示的数。二进制数中每一个 0 或每一个 1 都称为一个「位(Bit)」。1. 位运算的运算符<<<<>>>>2. 位运算的性质。
2024-08-26 21:44:38
1167
103
原创 【C++】模拟(例题 & 学习)
本文主要介绍了编程竞赛中应对模拟题目的技巧,强调理解题意、理清思路、编写可读性强的代码以及多做练习以培养题感。通过一些具体的题目实例,详细解析了解题过程和代码实现,帮助参赛者提升解决这类问题的能力。
2024-08-26 21:44:14
679
9
原创 【C++例题 / 训练】滑动窗口(总结&&例题)
本篇主要总结关于滑动窗口的相关做题技巧与注意事项,滑动窗口也用到了双指针的内容,可以参考这篇文章,本篇主要用于在了解滑动窗口的构造后,快速掌握滑动窗口的做题技巧与做题模板,便于以后复习参阅经典例题如下。
2024-08-21 21:51:02
927
95
原创 【C++例题 / 训练】二分算法(模板 & 例题)
以在一个升序数组中查找一个数为例,每次考察数组当前部分的中间元素,如果中间元素刚好是要找的,就结束搜索过程;如果中间元素小于所查找的值,那么左侧的只会更小,不会有所查找的元素,只需到右侧查找;该题相比于上题,该题有多个峰值存在,故在两个封顶之间的区间内,从左到右一定递增,故套用模板二,找区间左端点即可。3、该区间对题目具有单调性,即:在区间中的值越大或越小,题目中的某个量对应增加或减少。注:封顶的左边区间,一定是递增的,因此套用模板三即可,找最右端点。该题仍具有二段性,左边递增,右边递减,用二分查找算法,
2024-08-21 21:50:12
1260
36
原创 【Linux详解】进度条实现 && Linux下git 的远程上传
【Linux必备工具】自动化构建工具makefile的使用详解-CSDN博客💢缓冲区是提高系统数据读写效率的重要机制。理解和有效利用缓冲区及其刷新策略,可以显著提升程序性能和资源利用效率。以上就是进度条实现 && Linux下git 的远程上传的全部内容啦!!!💞 💞 💞!!祝大家天天开心。
2024-08-15 10:15:13
4666
80
原创 【C++高阶】:特殊类设计和四种类型转换
✨ 人生如梦,朝露夕花,宛若泡影 🌏📃个人主页:island1314🔥个人专栏:C++学习⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 特殊类设计和四种类型转换:1. 特殊类设计1.1 无法被拷贝的类1.1.1 C++98的做法:1.1.2 C++11的做法:1.2 只能在堆上创建对象的类1.3 只能在栈上创建对象的类🍉1.3.1 实现一:🥝1.3.2 实
2024-08-11 17:55:55
1594
33
原创 【Linux必备工具】自动化构建工具makefile的使用详解
项目构建时遇到的各种挑战如文件编译顺序、库链接、依赖文件的管理等,在不同开发环境中会有不同的解决方案。在环境中,这些问题往往被自动处理,运行直接Ctrl + F5就可以了,编译个项目非常轻轻松松。但那是因为 VS 帮你自动维护了对应的项目结构!那如果我们需要去手动实现呢:多文件 我们应该先编译哪一个程序?链接需要哪些库?整个项目结构,该如何维护......在 Linux 环境中,我们需要更手动、细致地管理这些方面。为了解决这个问题,Linux 提供了自动化构建工具 Makefile。
2024-08-10 13:02:11
1628
44
原创 【C++高阶】:自定义删除器的全面探索
这篇文章主要是对之前智能指针的一个小小的补充,没有看过智能指针的读者朋友们,可以参考下下面这篇博客【C++高阶】:智能指针的全面解析-CSDN博客int main()// 创建一个shared_ptr,管理一个打开的文件// 使用fclose作为定制删除器"test.txt"// 创建一个shared_ptr,管理一个打开的文件 // 使用fclose作为定制删除器 std::shared_ptr file (fopen( "test.txt" , "w" ), fclose);
2024-08-07 21:34:03
1179
96
原创 【C/C++笔记】:易错难点3 (二叉树)
首先可以将root放入队列中,由于root的level=0,所以从其出发的可以直接到达点的level=1,将root从队列中弹出,然后将level=1的点放入队列中,因此现在队列的所有节点的level=1。将一棵有100个结点的完全二叉树从根这一层开始,开始进行层次遍历编号,那么编号最小的叶节点的编号为(),则编号为 98 的节点的父节点编号为()。在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个。i=0,i为根节点编号,无双亲节点。
2024-08-07 20:49:54
1169
49
原创 【C++高阶】:智能指针的全面解析
以上就是智能指针的全部内容啦,后面我会单独出一篇关于自定义删除器的博客,敬请期待咯!!!💞 💞 💞!!祝大家天天开心。
2024-08-07 20:49:25
1061
88
原创 【C++高阶】:C++11的深度解析下
【C++高阶】:C++11的深度解析上-CSDN博客以上就是C++11的全部内容啦!!祝大家天天顺心如意。
2024-08-01 16:29:27
2460
83
原创 【C++高阶】:C++11的深度解析上
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以我们要作为一个重点去学习。
2024-07-30 22:07:09
1815
85
原创 【C++高阶】哈希的应用(封装unordered_map和unordered_set)
【C++高阶】哈希函数底层原理全面探索和深度解析-CSDN博客之前我们已经学习了如何手搓哈希,现在让我们来对哈希进行改造,并且封装成unordered_map和unordered_set。注意:本篇我们采用开散列的方式来模拟实现unordered//转成数字,把key// 特化template<>hash *= 31;hash += e;namespace hash_bucket //哈希桶-链式template<class T> //用一个值来确定底层存的是什么*/
2024-07-30 16:58:32
867
37
原创 【C++高阶】哈希函数底层原理全面探索和深度解析
本文旨在揭开哈希算法的神秘面纱,带领大家深入探测哈希的底层世界。从哈希函数的内部逻辑出发,探讨其如何通过一系列的数学变换与位操作,将任意长度的输入数据映射为固定长度的输出值。同时逐步探索哈希表的数据结构冲突解决策略以及内存管理技巧。通过详细剖析哈希函数的内部逻辑与实现方式,我们将揭示那些隐藏在高效与安全背后的智慧与努力return//转成数字,把key// 特化template<>{ // 避免因为顺序不一样而产生一样的值 BKDR// 避免 abc,acb同值不同意hash *= 31。
2024-07-28 15:51:09
1159
58
原创 【C++】红黑树的应用(封装map和set)
【C++】红黑树的全面探索和深度解析-CSDN博客之前我们已经学习了如何手搓一棵红黑树,现在让我们来对红黑树进行改造,并且封装成map和set.map 和 set 的底层本质上还是复用,通过对红黑树的改造,再分别套上一层 map 和 set 的 “壳子”,以达到 “一树二用” 的目的。在改造红黑树的过程中,我们应该就解决以下几个需要重点解决的问题:📒(1) 对红黑树节点的改造。
2024-07-28 11:35:16
1427
61
原创 【算法/训练】:动态规划DP
先创建一个 dp[ n + 2 ][ m + 2 ],然后让dp[ 0 ][ 1 ] = 1 或者 dp[ 1 ][ 0 ] = 1。注意这样初始化的时候,x需要+1,y也需要+1.dp[i][j] 表示:从[0, 0]出发,到底[i, j]位置,一共有多少种方法。当走到马可以走的地方,dp[ i ][ j ] = 0;对输入的字符矩阵我们按照要求将其。故(i,j)位置的积分应该为dp。对于第一行和第一列我们应该特殊处理,利用。,然后我们就可以按照dp。
2024-07-24 20:20:27
1754
33
原创 【C++】红黑树的全面探索和深度解析
RED,BLACK:_kv(kv){}public:~RBTree()//根节点默认为黑色// 新增节点。颜色红色给红色elsewhile (parent && parent->_col == RED) //当父亲节点为红色,则出现了连续的红色,不符合条件// g// p uif (uncle && uncle->_col == RED) //叔叔存在并且为红//往上面走else。
2024-07-24 20:20:11
1210
78
原创 【C++例题/训练】:前缀和&&差分
前面我们已经通过【算法/学习】前缀和&&差分-CSDN博客学习了前缀和&&差分的效相关知识,现在我们开始进行相关题目的练习吧。
2024-07-22 22:38:05
954
53
原创 【算法/学习】前缀和&&差分
对于一个给定的数列a,其中a[1],a[2]…在构造时,只需要将b[1]看做在[1, 1]区间上加上a[1];一维差分数组的构造也很简单,即a[1] = b[1], b[2] = a[2] - a[1], b[n] = a[n] - a[n-1];始终要记得,a数组是b数组的前缀和数组,比如对b数组的b[i][j]的修改,会影响到a数组中从a[i][j]及往后的每一个数。注意:求 [ l, r ]的和是s[ r ] - s[ l - 1],之所以要 l - 1是因为,a[ l ] 也包括在内。
2024-07-22 17:08:02
1000
39
原创 【C/C++笔记】:易错难点2
public:public:CBook() {解答:当需要在const方法中修改对象的数据成员时,可以在数据成员前使用mutable关键字,防止出现编译出错。public:// 如果不加就会出错// 定义const方法。
2024-07-21 22:29:32
975
15
原创 【C++高阶】:AVL树的全面探索和深度学习
前面我们学到了二叉搜索树,【C++高阶】二叉搜索树的全面解析与高效实现虽然二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法,即AVL树,它以其独特的平衡机制和高效的搜索性能,成为了一颗璀璨的明星。
2024-07-20 10:16:43
1478
78
原创 【C++高阶】高效数据结构的探索(map&&set)
【C++深度学习】二叉搜索树的全面解析与高效实现-CSDN博客通过之前对二叉搜索树的学习,我相信大家对set和map也应该有所了解,set就类似于二叉搜索树的K模型,而map就类似于二叉搜索树的KV模型,下面就让我们进入对其的了解吧,踏上这神秘的学习之旅这里推荐两个题目让大家练习一下,方便巩固set与map前K个高频单词两个数组的交集%5Clog%20N。
2024-07-18 17:02:46
1090
58
原创 【C/C++笔记】:易错难点1
要改成(*f1)(s)才正确。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且在主调函数中,函数返回值必须赋给同类型的指针变量。其次,我们知道,数组名代表的是首元素的地址,我们访问数组中的元素一般用arr[1]的形式;*f1(s)中()的优先级比*高,()先与f1(s)结合,返回结果是char,*f1(s)是对返回结果。首先,在这个题目中我们应该明确的是:在二维数组中,二维数组的数组名是代表首元素的地址,而。D、要正常使用f1应该使用(*f1)(s),与f1(s)效果相同。
2024-07-14 16:40:37
52
原创 【算法/序列】等差数列&&子序列&&算术序列&&最长对称子串
子序列:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列。:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列。该题主要是求其满足等差性质的子数组个数,并且子数组在原数组的相对顺序不能变,并且。长度为3的子序列:(1,2,3)、(1,2,5)、(1,4,5)长度为1的子序列:(1)、(2)、(3)、(4)、(5)长度为2的子序列:长度为2的子序列都是算术子序列。:是数组中的一个连续序列。长度为4的子序列:0。长度为5的子序列:0。
2024-07-14 15:23:33
1026
16
原创 【题目/训练】回溯、搜索练习1
从(1,1)开始读入,给地图上可以行走的地方初始化为1,0表示不可以走的点,相当于给地图外面放上障碍,就不用向前面几题一样对(x,y)进行特殊判断(如判断是否为1该点相邻的点,是不是障碍,有没有访问过)分别表示当前已经选择了几个数,当前这一层可以选择的最小数字,所选当前的和值,is_prime()函数则用来判断是否为质数,这题与之前文章里的。假设马在(x,y)这个点,则马可以移动的方向有8个,偏移量如下所示,注意马走日。,遍历每一层,如果遍历了某个节点时,那么后续遍历这个节点绝对比之前找的step要大,
2024-07-12 20:02:28
230
16
原创 【C++高阶】多态(概念&&虚函数&&抽象类)
在编程的广阔领域中,多态(Polymorphism) 无疑是一个令人着迷且至关重要的概念。它不仅是面向对象编程(OOP)的三大特性之一(与封装和继承并列)也是实现代码复用、提高软件灵活性和可扩展性的关键所在。当我们谈论C++这门强大的编程语言时,多态更是一个不可或缺的话题需要声明的
2024-07-10 23:00:30
2079
17
原创 【C++深度探索】继承机制详解(友元&&静态&&菱形继承&&虚拟继承&&组合)
点击跳转到文章【C++深度探索】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)前面我们已经学习了继承前面部分的相关知识,本文主要介绍1、很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2、多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3、public继承是一种is-a的关系。
2024-07-09 22:20:24
890
16
原创 【算法/学习】单调队列&&单调栈
擅长维护区间【最大/最小】值,最小值对应单调递增队列擅长维护最近【大于/小于】关系,从左侧先入栈就是维护左侧最近关系从右侧先入栈,就是维护右侧最近关系。
2024-07-09 12:05:31
680
29
原创 【C++/STL】模板进阶(非类型模板&&类模板打印&&特化&&分离编译)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。(1)优点1、模板复用了代码,但本质上编译器会帮我们生成实例化的代码,只是减少了人工的消耗,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2、增强了代码的灵活性(2)缺陷1、模板会导致代码膨胀问题,也会导致编译时间变长2、出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2024-07-07 14:54:01
863
37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人