- 博客(58)
- 收藏
- 关注
原创 【C++---unordered_set/map底层封装】个不拘一格的集合。它不似有序集合那般循规蹈矩,而是以一种洒脱不羁的方式,将元素们随意地散落其中。每一个元素都是独一无二的。
【代码】【C++---unordered_set/map底层封装】个不拘一格的集合。它不似有序集合那般循规蹈矩,而是以一种洒脱不羁的方式,将元素们随意地散落其中。每一个元素都是独一无二的。
2025-01-26 11:47:01
989
54
原创 【C++---哈希表】哈希表的魅力,不仅在于其高效与便捷,更在于其背后所蕴含的深刻哲理。它告诉我们,即使面对再复杂、再混乱的世界,只要我们用心去寻找、去创造,总能找到一种方法,将其变得有序而美好。
这里的unordered_set其实与set相似,只不过底层实现是不一样,还有其他特殊的不同.不过他们大部分功能是相同的。unordered_set的声明如下,Key就是unordered_set底层关键字的类型•unordered_set默认要求Key⽀持转换为整形,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key转成整形的仿函数传给第⼆个模板参数•unordered_set默认要求Key⽀持⽐较相等,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key⽐较相等的仿函数传给第三个模板参数•。
2025-01-25 11:57:58
1066
48
原创 【C++----红黑树封装set / map底层大致封装】在C++的世界里,每一次编译都是对智慧的考验,每一次调试都是对耐心的磨砺。开发者们在这里不断学习、成长,用代码编织出一个个精彩纷呈的故事。
•如果当前结点是⽗亲的右,根据中序左⼦树->根结点->右⼦树,当前当前结点所在的⼦树访问完了,当前结点所在⽗亲的⼦树也访问完了,那么下⼀个访问的需要继续往根的祖先中去找,直到找到孩⼦是⽗亲左的那个祖先就是中序要问题的下⼀个结点。end()如何表⽰呢?如下图:当it指向50时,++it时,50是40的右,40是30的右,30是18的右,18到根没有⽗亲,没有找到孩⼦是⽗亲左的那个祖先,这是⽗亲为空了,那我们就把it中的结点指针置为nullptr,我们⽤nullptr去充当end。
2025-01-18 17:31:05
1292
56
原创 【C++---红黑树】在编程的浩瀚星空中,C++犹如一颗璀璨的星辰,以其独有的韵律和节奏,吟唱着智慧与创造的赞歌。它不仅仅是代码的堆砌,更是思维与艺术的交融,引领着无数追梦者,在数字的世界里翩翩起舞。
1.1红黑树的规则1.2路径问题1.3 红⿊树如何确保最⻓路径不超过最短路径的2倍的?1.4 红⿊树的效率对于时间复杂度的计算:假设N是红⿊树树中结点数量,h最短路径的⻓度,那么 2h-1
2025-01-16 20:53:42
1214
42
原创 动态规划-----路径问题
对于路径问题:第一:分析状态第二:列出状态方程第三:初始化(防止越界访问)第四:填表顺序(由状态方程的出填表顺序)第五:得出返回值。
2024-11-27 17:42:05
3632
137
原创 鸿蒙生态崛起!!!
鸿蒙生态是基于OpenHarmony共建共享的生态,是所有基于OpenHarmony系统(开源鸿蒙)社区版本开发、并通过开放原子开源基金会的开源鸿蒙认证,打标Powered by OpenHarmony的设备和操作系统,以及运行在这些设备和操作系统之上的应用的总称。
2024-11-25 21:15:54
2879
40
原创 python 小课堂(二)
概念:条件语句能够表达 “如果 … 否则 …” 这样的语义. 这构成了计算机中基础的 逻辑判定.条件语句 也叫做 分支语句, 表示了接下来的逻辑可能有几种走向.例子:一个典型的例子: 如果丘处机没有路过牛家村,1. 那么金兵不会死在郭, 杨两家手上2. 郭, 杨两家就不会流亡北方3. 郭夫人就不会去到大漠, 完颜洪烈就不会遇到包惜弱4. 郭靖就不会和江南七怪救了铁木真5. 蒙古就不会统一6. 蒙古铁骑就不会西征7. 欧洲就不会出现火药, 也就不会出现文艺复兴, 大航海.
2024-11-25 18:43:03
1065
105
原创 AI大模型如何赋能电商行业,引领变革?
个性化推荐系统AI技术通过分析用户的浏览行为、购买历史和兴趣偏好,能够生成个性化的产品推荐列表。这种推荐系统不仅提高了用户的购物体验,还显著增强了用户的购买意愿和转化率。例如,电商平台如亚马逊就采用了这种策略,通过“顾客还购买了”或“与您购买的商品相关”的推荐,有效提升了销售额。AI在订单处理环节中的作用快速处理与分析订单数据AI技术能够实现对大量订单数据的快速处理和分析,通过智能算法优化订单处理流程,提高订单处理效率。
2024-11-24 11:51:34
1111
21
原创 详解 【AVL树】
那么a就只有4处可以插入值导致5的平衡因子为2,而b或c是以上x,y,z三种情况都可以。这里a的结构只能是x,因为为y或z时那么旋转的结点就不是5了,而是y或z结点*那么搭配就有3**3*4=36种搭配结果。
2024-11-22 23:40:19
1599
58
原创 python小课堂(一)
1、print()括号中不仅能输入整型浮点字符串,还能输出布尔类型print(10)print(1.2)2、如果想要在print()括号中输出变量的数据时,则我们就要用到f“内容”的格式数据变量用{}引出a=10b=1.1d=Falseprint(f"整型a = 10 b = 1.1 c = "hello world" d = False print(f"整型 {a } 、浮点 {b } 、字符串 {c } 、布尔 {d } ")
2024-11-22 20:24:41
8436
76
原创 怎么看待Ai发展前景?
人工智能技术的应用场景和潜力,带来的影响和贡献,在现代的技术背景下的机遇人工智能技术的应用场景和潜力,带来的影响和贡献,在现代的技术背景下的机遇。
2024-11-18 17:19:18
2952
40
原创 c++--------《set 和 map》
• set的声明如下,T就是set底层关键字的类型• set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现仿函数传给第⼆个模版参数• set底层存储数据的内存是从空间配置器申请的,如果需要可以⾃⼰实现内存池,传给第三个参数。• ⼀般情况下,我们都不需要传后两个模版参数。• set底层是⽤红⿊树实现,增删查效率是 ,迭代器遍历是⾛的搜索树的中序,所以是有序的。O(logN)
2024-11-17 18:03:29
1815
85
原创 《⼆叉搜索树》
4• ⼆叉搜索树中可以⽀持插⼊相等的值,也可以不⽀持插⼊相等的值,具体看使⽤场景定义,后续我们学习map/set/multimap/multiset系列容器底层就是⼆叉搜索树,其中map/set不⽀持插⼊相等值,multimap/multiset⽀持插⼊相等值。那么这样的效率显然是⽆法满⾜我们需求的,⼆叉搜索树的变形,平衡⼆叉搜索树AVL树和红⿊树,才能适⽤于我们在内存中存储和搜索数据。找到key对应的value。key的搜索场景实现的⼆叉树搜索树⽀持增删查,但是不⽀持修改,修改key破坏搜索树结。
2024-11-10 15:32:20
1522
120
原创 c++-----------------多态
多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。Person对象买票全价,Student对象优惠买票。
2024-11-08 11:54:32
2095
69
原创 c++----------继承
下⾯我们看到Person是基类,也称作⽗类。Student是派⽣类,也称作⼦类。(因为翻译的原因,所以既叫基类/派⽣类,也叫⽗类/⼦类)
2024-11-06 17:32:32
813
102
原创 C++ ----------- 栈和队列
1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的2. 此类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4.底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。
2024-11-02 16:57:00
1716
91
原创 vector
vector的介绍文档使用STL的三个境界:能用,明理,能扩展 ,那么下面学习vector,我们也是按照这个方法去学习)构造函数声明接口说明vector()(重点)无参构造构造并初始化 n val(重点)拷贝构造使用迭代器进行初始化构造vector的构造代码演示。
2024-09-29 17:42:54
1167
99
原创 初识模版!!
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。1.隐式实例化:让编译器来根据实参来推导参数模版实际类型。2.显示实例化:在函数名字后的中填写类型。相似的结构太多,这样看起来就会很挫。
2024-09-21 17:19:14
778
92
原创 排序《数据结构》
2、稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。1、排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
2024-09-08 20:08:57
2066
119
原创 堆《数据结构》
量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。2:建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。如:a[child] < a[parent] 建。a[child] > a[parent]建。向下调堆:从最后一个根节点开始调整。1.用数据集合中前K个元素来建堆。对于Top-K问题,能想到的。第三层: 向上调整2次。第二层:向上调整 1次。第n层:向上调整n次。第n层:2^n-1个。
2024-08-24 18:41:17
1736
118
原创 二叉树《数据结构》
又因为一个度为2的结点会有2个子结点,一个度为1的结点会有1个子结点,除根结点外其他结点都有父结点,n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=n/2 或 n0=(n+1)/2。1.某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;如上图:A是B的父结点。的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对。
2024-08-19 19:16:00
2005
84
原创 数据结构-------队列
FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。首先实现一个队列,然后在构建俩个队列,俩个队列互相导数据。与栈类似,可以把声明与定义分开。组头上出数据,效率会比较低。实现文件.c(接口实现)
2024-08-10 18:17:04
885
37
原创 C++之————string类
运用到getline来代替cin输入字符串,因为cin>>与scanf类似遇到字符空格(‘ ’)就会结束,而getline则不会最后再用 总数-1-pos=最后一个单词长度int main()return 0;
2024-08-06 17:48:50
1267
49
原创 类和对象(下)
所以静态成员函数没有this指针,静态成员函数中可以访问其他的静态成员,但是不能访问⾮静态的,因为没有this指针。引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始。尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这。如果你没有给缺省值,对于没。显⽰在初始化列表初始化的⾃定义类型成员会调⽤这个成员类型的默认构造函数,如果没有默认构。3、⽤static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针。
2024-08-01 17:06:41
2594
53
原创 C++ 《类与对象》(中下)
运算符重载是具有特名字的函数,他的名字是由operator和后⾯要定义的运算符共同构成。和其他函数⼀样,它也具有其返回类型和参数列表以及函数体。//声明int operator+(int x,int y)//定义return x+y;但是关于运算符重载函数的声明与定义一定的要求:// 重载为全局的⾯临对象访问私有成员变量的问题// 有⼏种⽅法可以解决:// 1、成员放公有// 2、Date提供getxxx函数// 3、友元函数// 4、重载为成员函数1.成员公有。
2024-07-25 18:56:29
1128
39
原创 C++《类和对象》(中)
默认成员函数就是⽤⼾没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。那么我们主要学习的是1:编译器自动生成的成员函数是否满足我们的需求。2:当编译器自动生成的函数不满足我们需求时,我们应该如何自己实现?C++把类型分成内置类型(基本类型)和⾃定义类型。内置类型就是语⾔提供的原⽣数据类型,如:int/char/double/指针等,//栈public:perror("malloc申请空间失败");return;_top = 0;
2024-07-24 19:58:36
1527
57
原创 C++《类和对象》(上)
class Datepublic:int Getdaymonth(int year,int month)//日期获取 默认成《内联函数》在calss中return 29;else//d1+=/+//d1-= 和 -//d++,++d//d--和--d//d1-d2(俩日期相减)private:int _year;int _month;int _days;// C++升级struct升级成了类// 1、类⾥⾯可以定义函数。
2024-07-23 19:35:12
1048
22
原创 初阶C++(三)
inline实际上是对代码效率的提高起着重要作用,其特点:⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就需要建⽴栈帧了,就可以提⾼效率**
2024-07-10 16:46:44
1091
11
原创 初阶C++(二)
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。如:周树人被称作为“”鲁迅“、孙悟空被称作为“斗战神佛”…C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的>,这⾥引⽤也和取地址使⽤了同⼀个符号&,⼤家注意使⽤⽅法⻆度区分就可以接下来就是对引用的定义-------int main()//用b、c、d来引用aint a = 0;int& b = a;int& c = a;
2024-07-09 16:51:07
1018
14
原创 《初级C++》(一)
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。
2024-07-08 17:19:46
860
12
原创 结构体介绍(2)
根据之前讲了结构体的《声明》、《创建》、《初始化》、《结构体内存对齐》。接下来我们就来深入探讨结构体问题:那么有没有考虑结构体嵌套结构体的内存对齐呢?比如:struct Sint_a:2;//位段结构、4个字节----32个bitint_b:5;//位段结构、4个字节----32个bitint_c:10;//位段结构、4个字节----32个bitint_d:30;//位段结构、4个字节----32个bitint main()return 0;
2024-05-05 21:51:08
789
11
原创 结构体介绍(1)
结构体属于自定义类型,可以自定声明一个数据列如:一本书{书名}、{价格}、{作者}、{书号}这种自定义结构体能够很好的帮助解决问题以下是本篇文章正文内容,下面案例可供参考struct 是C语言的一种工具,该工具是为了解决一系列所需要内容所创建的。1、struct 内容理解自定义类型struct实用性广:结构体将同一对象的多个数据类型存储在一起。当想要存储同一对象的不同或相似数据类型的数据(例如姓名、地址、电话等)时,它会很有帮助。
2024-05-04 12:35:39
1746
8
原创 字符函数与字符串函数(2)
根据上期字符函数与字符串函数我们可以了解到字符函数与个别字符串函数的用法,那么接下来就开始对字符串函数的详细讲解(以下是本篇文章正文内容,下面案例可供参考1:函数strcat与strncat、strcpy与strncpy、strcmp与strncmp的区别这俩种尽量用第二种比较安全(也称相对安全函数字符函数与字符串函数对于以后的代码实现具有很大的帮助,因此深刻理解字符函数与字符串函数是有必要的!!!
2024-05-03 22:47:01
1970
9
原创 字符串函数与字符函数运用(1)
字符串函数大概有以下这几种 strcpy、strcat 、strcmp、strncpy、strncat、strncmp、strstr、strtok、strerror这些函数可以很好的解决你所遇到的关于字符串相对应的问题字符函数以下是本篇文章正文内容,下面案例可供参考。
2024-05-02 10:21:19
1097
14
原创 《代环问题》
尾结点的next指针有可能指向任意的位置代环链表是面试时面试官常常问的问题,而单单了解代码怎么解是远远不够的还要了解代码的本质.最后祝大家五一快乐(^▽ ^!!!!**
2024-05-01 11:20:50
988
11
原创 《双向链表》
`链表有着不同的种类,分别有《带头or不带头》,《单向or双向》,《循环or不循环》222结合起来就有8种,而相对与双向链表则是《带头》《双向》《循环》的链表``
2024-04-15 23:39:35
371
9
原创 编译和链接
当text.c的时候只有几行代码,到text.i后有很多行代码,而多出来的是头文件的所包含的代码。gcc-c test.s(对test.s进行处理生成.obj目标文件)c代码经过《预处理》–《编译》–《汇编》—《链接》–《可执行程序》VS2022:集成开发环境(编辑器,编译器,连接器,调试器)ggc-S test.i 把c代码转换为汇编代码。把汇编代码转化为机器指令(二进制指令)先让文件变成----test.i。把多个目标文件经过链接的处理,link.exe-链接器。cl.exe-编译器。
2024-03-31 12:10:54
208
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人