- 博客(64)
- 收藏
- 关注
原创 智能指针笔记
智能指针,利用class类对象销毁的时候自动调用析构函数,去把delete ptr的操作放在析构函数里,去实现自动释放指针里的资源RAII是ResourceAcquisition Is Initialization的缩写,他是⼀种管理资源的类的设计思想,本质是 ⼀种利⽤对象⽣命周期来管理获取到的动态资源,避免资源泄漏,这⾥的资源可以是内存、⽂件指 针、⽹络连接、互斥锁等等。
2025-05-09 11:22:57
231
原创 unordered_map和unordered_set的模拟实现
作业总结:用哈希桶链处理法完成简单的unordered_map和unordered_set错误点:错误点改(源.cpp——main函数的那个,修改为包含a2.hpp而不包含a1.hpp):仍然报错,源.cpp把两个头文件都包含依然报错,修改办法(1):博主还没能深刻的学习关于编译的知识,暂且不清楚因何而至,等后面有机会学,(搁置ing)
2025-04-27 13:53:51
366
原创 红黑树insert笔记,外带一点迭代器思考
贴的代码还是有点“小问题”,比如insert里的比较是直接和kv比较,用pair的内置比较,即用到了key,也用到了value,这是不合“红黑树key,value逻辑”的,总之就这样了,能用就行。ps:博主在写insert的时候,vs2022也是狂出毛病,然后博主调试分析不出错误,问豆包也是一本正经的胡说八道。main.cpp(简单的测试代码)
2025-04-18 12:04:03
129
原创 AVL树的insert,左旋右旋笔记
由于只是学习了解,不用费什么脑子,目标(实现平衡二叉树的insert)和方法(旋转)已经给出,自己私底下尝试写出一个insert函数也仅仅只是锻炼分情况讨论的解题方法和熟悉一下旋转;二是旋转后忘记break;去停止向上更新平衡因子,找了老半天,中途又嫌弃调试器的二叉树不好展现出来,还去找了插件(最后也不了了之了,每次搞json文件就头大)insert的主要逻辑还是,插入,平衡因子改变,向上更新平衡因子,然后旋转/结束。一是搞出了这种不可能存在的insert情况(长教训了)
2025-04-16 11:26:41
271
原创 学Qt笔记
2.浅浅的认识了qt的对象树,以及对象树是如何“no delete去避免”内存泄漏的,qDebug()当cout用(可统一关闭的cout,附带解决乱码问题),认识到继承qt内置类可以扩展类的功能(不必担心父类在对象树而继承的子类没在对象树而调用不到析构,因为父类析构虚函数)3.了解由于历史原因,qt中多出来的这一套Q+sql(如Qstring)的数据结构,1.qt creator设计提供了拖拽式的编辑ui的控件,和代码直接编辑构建的方式。先叠个甲:本人正在学qt,视角还不完备,如有错误请多多包含。
2025-04-13 16:44:19
299
原创 c++set,map,unordered_set,unordered_map,multiset,multimap
简简单单记录下复习的东西吧,这东西还是用着用着就熟了,没啥可写的,忘记函数的具体效用,翻手册就行的,以map为例,<key,value,比较器,内存分配器>,map存的是pair<Key, T>,for(auto [key, value] : hash) 可取,pair到[]里,unordered_map,unordered_set,底层是哈希表,map,set,multiset,multimap,底层是红黑树,,multiset,multimap中的前四个,set(集合),map(映射)
2025-03-30 16:29:13
136
原创 [操作系统,学习记录]3.进程(2)
退出码,子进程通过exit/return返回,父进程wait/waitpid等待而得,status(虽int但仅利用后八位),父进程不管子进程(不wait),父进程退出——孤儿进程,不退出——僵尸进程(内存泄漏)因为status是int类型,但是被当成位图使用,它的8-15位存的是退出状态。利用exec系列函数去替换调用新的程序,exec意为execute。玩法二:if,else然后调用execve函数去执行新的程序。玩法一:通过返回值if,else去执行不同的代码片段。
2025-03-29 15:22:58
192
原创 [操作系统,学习记录] 2.进程(1)
linux中可使用,ps+grep,top,/proc来监视查看进程;· 先描述,再组织——利用struct去记录进程的信息,然后利用数据结构对struct出的进程类型进行管理;Zombie僵尸进程(PCB不会清理,会占用空间,需要父进程wait();),孤儿进程(init进程收养)PCB(process control block),linux上的task_struct就是PCB。Run,Sleep,Disk sleep(磁盘休眠),sTopped,X:dead;(延迟分配/写时拷贝)
2025-03-29 14:21:21
178
原创 一个简单的BSTree实现
仅有find,insert,erase,inorder,难点也就是erase,(其实还好)博主写的是一个非常简单的c++的BSTree,没迭代器,没多的接口,下面把代码贴出也算是水完了。
2025-03-25 08:30:00
192
原创 class与对象的关系
类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。有的人造的自定义类型,没有成员变量,只有函数,搞得就是一个函数袋子,(这个时候这个自定义类型所创建的对象还是占有一个字节的空间)有的人造的自定义类型,没有函数,只有成员变量,玩的跟struct一样,class创建出自定义类型,对象类似于(int a;经典的,房子图纸,和创建的房子之间的关系,
2024-05-08 19:45:14
218
原创 LeetCode:118.杨辉三角
杨辉三角核心的就那样做,无论是打印出来还是以数组的形式返回,都只是换汤不换药罢了,二维数组简单的应用,C语言实现:
2024-02-14 23:32:13
636
原创 LeetCode:67.二进制求和
又是一道求和,牢记核心要点求模,求余的使用,思路:对齐后逐个相加C语言实现,易错,字符串的结束标志很容易忘记!
2024-02-12 22:11:43
598
原创 LeetCode:13.罗马数字转整数
看似有点迷,实际上没啥套路,最最基础,根本没花样,我愿称之为目前见到的最简单的LeetCode题!C语言实现:
2024-02-05 22:51:05
578
原创 LeetCode:292.Nim 游戏
大一开学到现在,我不禁思考一个问题:代码重要吗?我的答案是,根本不重要,或者说,是次要的。我认为分析问题,和画图是写题的开始,方法的学习,和灵活运用是目的。代码从来都不重要。
2024-02-04 14:04:04
557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人