- 博客(108)
- 收藏
- 关注
原创 【c++】STL容器——使用红黑树模拟实现map和set(由浅入深逐步完善3w字详解)
一、了解STL库中的map/set的底层二、红黑树的迭代器三、红黑树的插入四、map/set的封装set的封装map的封装五、测试测试一测试二六、学习STL库中的实现set如何保证key不被修改map如何保证key不被修改八、set的改进红黑树的const迭代器改进set测试一测试二测试三九、map的改进测试一测试二operator[]Insert继续完善operaotr[]测试一十、完善set的Insert十一、源代码MyMap.hMyset.hR
2025-06-12 11:35:19
721
36
原创 【c++】红黑树的概念讲解与模拟实现、红黑树与AVL树的比对(2万字详解)
一、红黑树的概念讲解二、红黑树的模拟实现铺垫insertIsBalanceHeight三、验证我们的代码是否可以构建出红黑树验证一验证二验证三四、红黑树与AVL树的比对比对一比对结果分析比对二比对结果分析总结红黑树和AVL树五、源代码RBTree.htest.cpp
2025-06-09 11:24:03
705
33
原创 【c++】AVL树(平衡搜索树)的概念讲解与模拟实现(万字详解)
一、AVL树的概念讲解二、AVL树的模拟实现铺垫平衡因子插入四种旋转左单旋右单旋右左双旋左右双旋IsBalance三、验证我们的代码是否可以构建出AVL树简单验证更严格更随机更大量的数据进行验证四、源代码AVLTree.htest.cpp总结
2025-06-05 10:24:21
885
52
原创 【c++】c++异常
一、c语言传统的处理错误方式:处理方式一处理方式二二、c++异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范四、自定义异常体系五、c++标准库的异常体系六、异常的优缺点异常的优点异常的缺点
2025-05-29 21:33:35
317
47
原创 【c++】STL容器-map和set、multimap和multiset的使用和介绍(2.3w字详情解析)
一、关联式容器二、键值对(key-value pair)--- pairpair的介绍pair的使用构造函数make_pair(c++98)三、setset的介绍set的使用构造函数、赋值运算符重载迭代器的使用begin、end 范围forempty、sizeinserteraseswap、clearfindcountlower_bound 下界upper_bound 上界equal_range四、multisetmultiset的介绍multiset的使用in
2025-05-28 21:28:57
1101
44
原创 【linux】linux进程概念(四)(环境变量)超详细版
一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示所有环境变量/dev/pts/0 字符设备HISTSIZE 默认保存的历史指令条数OLDPWD 保存上一次所处路径三、测试PATH四、测试HOME和USER五、getenv 通过系统调用获取环境变量六、命令行参数指令的原型打印命令行参数表使用命令行第三个参数获取环境变量,打印环境变量表八、命令分为常规命令和内建命令内建命令的引出模拟内建命令九、通过第三方变量environ获取环境变量
2025-05-25 12:03:53
1532
58
原创 【c++】二叉搜索树的模拟实现——由浅入深2.4w字详细讲解(key结构的非递归,key结构的递归,key_value结构的递归)
一、概念讲解二、key结构非递归的模拟实现铺垫插入函数中序遍历函数查找函数删除函数测试三、key结构的递归的模拟实现铺垫插入函数查找函数删除函数测试四、key结构的默认成员函数拷贝构造函数赋值运算符重载函数析构函数测试五、key模型和key_value模型的二叉搜索树的应用key模型的二叉搜索树的应用key_value模型的二叉搜索树的应用六、key_value结构的递归的模拟实现铺垫拷贝构造函数赋值运算符重载函数析构函数不需要修改中序遍历函数不需要修改
2025-05-21 22:51:41
1202
43
原创 【linux】linux进程概念(三)(进程状态,僵尸进程,孤儿进程,进程优先级)
一、操作系统学科上的进程状态运行状态阻塞状态挂起状态二、linux中对应的进程状态R运行状态S睡眠状态D磁盘休眠状态T停止状态三、僵尸进程(Z僵尸状态)四、孤儿进程查看1号进程五、批量化操作六、进程优先级基本概念如何调整优先级PRI和NI具体调整优先级使用nice和renice使用top
2025-05-19 12:24:44
1287
27
原创 【linux】linux进程概念(二)(fork的介绍与使用)
一、通过系统调用创建进程——fork初识fork的介绍观察代码运行结果1观察代码运行结果2通过系统调用getpid和getppid获取进程标识符为什么fork要给子进程返回0,给父进程返回子进程的pid?fork函数做了什么?一个函数如何做到返回两次的?二、bash的子进程
2025-05-17 21:11:28
1218
36
原创 【c++】面向对象三大特性之——多态
一、多态的概念二、多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数的重写,两个例外协变(基类与派生类虚函数的返回值类型不同)析构函数的重写(基类与派生类的析构函数的函数名不同)为什么要完成析构函数的重写?析构函数虚函数的进行重写的原理c++11 override和finaloverridefinal如何禁掉类的继承c++98做法要被继承的类的构造函数私有化优化方案要被继承的类的析构函数私有化优化方案c++11的做法重载,重写(覆盖),重定义(隐藏)的对比三、抽
2025-05-14 12:37:29
1308
41
原创 【c++】面向对象三大特性之——继承(菱形继承详细讲解)
一、继承的概念及定义继承的概念继承定义定义格式继承方式和访问限定符继承基类访问方式的变化派生类进行公有继承派生类进行保护继承或私有继承二、基类和派生类对象的赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承和菱形虚拟继承单继承多继承菱形继承缓解办法解决办法菱形虚拟继承的底层
2025-05-11 11:13:54
1427
48
原创 【c++】模板进阶,模板的分离编译重点讲解
一、class和typename作为模板参数的关键字的区别二、非类型模板参数介绍使用array容器的使用array容器与c语言数组的对比三、模板的特化概念引入四、函数模板特化五、类模板特化全特化偏特化部分特化参数更进一步限制测试类模板特化的应用举例六、模板的分离编译什么是分离编译通常来讲模板为什么不能声明和定义分离怎么样模板才能进行分离编译方法一方法二七、模板的总结
2025-05-09 11:45:39
1535
52
原创 【c++】STL容器-list和vector的反向迭代器的模拟实现
一、介绍与铺垫介绍铺垫二、模拟实现泛型的反向迭代器构造函数ReverseIteratoroperator*operator->operator++operator++(int)operator- -operator- -(int)operator!=operator==三、模拟实现的list中的反向迭代器typedefrbegin和rend测试四、vector模拟实现的反向迭代器测试源代码ReverseIterator.h模拟实现的模板类中应该编写的typedef和
2025-05-08 12:02:43
1000
35
原创 【c++】STL容器-priority_queue优先级队列的使用与模拟实现,仿函数讲解(由浅入深讲解实现)
一、介绍二、模拟实现铺垫priority_queue构造函数pushpoptopemptysize测试三、仿函数/函数对象介绍仿函数自定义控制比较指针指向的对象四、改进模拟实现讲解测试五、源代码PriorityQueue.htest.cpp
2025-05-07 16:09:35
1099
43
原创 【c++】STL容器-stack和queue的使用与模拟实现(附加deque的简单讲解)
一、stack的介绍二、stack的模拟实现铺垫pushpoptopemptysize测试三、queue的介绍四、queue的模拟实现铺垫pushpopfrontbackemptysize测试五、deque的简单介绍六、为什么deque不能替代vector和list相比于vector相比于list作为stack和queue容器适配器deque的迭代器七、deque的简单使用八、stack和queue实现的源代码stack.hqueue.htest.c
2025-05-05 00:40:50
1128
43
原创 【c++】STL容器-list的模拟实现(迭代器由浅入深逐步完善2w字讲解)
一、基本框架二、模拟实现铺垫构造函数push_backiterator迭代器对应的 begin end(浅度讲解)测试const_iterator迭代器对应的begin和end测试迭代器中重载运算符->测试迭代器运算符重载- -和==的完善迭代器拷贝构造的完善测试迭代器完整版本的源代码inserterasepush_backpop_backpush_frontpop_front测试拷贝构造函数swapoperator=测试clear析构函数empty
2025-05-03 00:38:33
1018
43
原创 【c++】STL容器-list的使用
一、list的介绍二、list的使用构造函数和拷贝构造函数 list析构函数 ~list赋值运算符重载 operator=迭代器 begin end rbegin rendemptysizefrontbackassignpush_frontpop_frontpush_backpop_backinserteraseswapclearresizereversesortmergeuniqueremovesplice
2025-04-29 14:45:13
1186
34
原创 【c++】STL容器-vector的模拟实现
构造函数 vector析构函数 ~vectorsizecapacityreservepush_backpop_back迭代器 begin end 对应 iterator 和 const_iteratoroperator[] 和 由const修饰的operator []测试inserterase测试resize测试拷贝构造函数 vectorswapoperator=测试构造函数使用n个T类型的值进行构造构造函数使用迭代器区间进行构造测试三、源代码vector.h
2025-04-27 23:39:49
1002
38
原创 【linux】linux进程概念(一)——冯诺依曼体系、操作系统、进程、PCB的概念讲解
一、冯诺依曼体系二、操作系统(OS)三、进程、PCB
2025-04-26 14:29:05
1482
49
原创 【linux】linux调试器-gdb的使用
一、debug和release二、要进行调试的准备工作二、gdb的使用启动gdb退出查看行号对应10行代码查看函数代码运行程序设置断点查看断点删除断点禁用断点启用断点逐过程调试逐语句调试打印变量值跟踪变量(让变量每次停下来都显示)取消追踪变量查看当前局部变量的值设置局部变量的值执行到函数返回跳到下个断点跳转到指定行查看函数调用堆栈
2025-04-24 23:24:06
1238
33
原创 【c++】STL容器-vector的使用
一、vector的介绍二、vector的使用构造函数和拷贝构造函数 vector析构函数 ~vector赋值运算符重载 operator=迭代器 begin end rbegin rendoperator[] 和范围for的遍历sizemax_sizecapacityemptyshrink_to_fitresizereserveatfrontbackdataassignpush_backpop_backinserteraseswapclearfind 算法用
2025-04-23 10:50:04
910
39
原创 【c++】STL容器-string的模拟实现(3w字详解版)
一、基本框架二、模拟实现铺垫构造函数 string析构函数 ~string拷贝构造 stringc_str测试operator[] 和 由const修饰的operator []begin end 对应的 iterator 和 const_iterator测试范围forsizecapacityempty测试reservepush_backappendoperator+=测试insert n个字符insert 字符串测试find 从pos位置处开始查找字符fin
2025-04-21 23:58:02
1137
50
原创 【linux】倒计时小程序、进度条小程序及其puls版本
一、知识铺垫1. 回车换行2. 缓冲区二、倒计时小程序1. 实现三、进度条小程序1. 基本框架2. 实现细节1. makefile2. progressBar.h3. main.c4. progressBar.c四、进度条小程序plus升级版本1. makefile2. progressBar.h3. main.c4. progressBar.c
2025-04-18 18:41:48
3763
52
原创 【linux】linux项目自动化构建工具-make/Makefile
一、如何简单使用make/Makefile二、细节介绍1. 依赖关系和依赖方法2. make和make clean3.回显问题4. 特殊符号\$@和\$^5. 注释三、为什么通常情况下make不能连续执行,那么又是如何做到的呢1. 为什么通常情况下make不能连续执行2. 那么又是如何做到的
2025-04-17 23:20:51
1099
15
原创 【linux】linux编译器-gcc/g++的使用、如何才能让普通用户进行sudo提权
一、sudo提权二、gcc/g++的简单使用三、gcc/g++编译器的执行步骤1. 预处理2. 编译3. 汇编4. 链接四、库1. 库的介绍2. 我们的.o文件和库是如何进行链接的五、debug和release
2025-04-16 10:26:44
1385
36
原创 【c++】STL容器-string的使用
一、STL1. STL简要介绍2. STL版本3. STL六大组件二、string1. string的介绍2. string的使用1. 默认成员函数1. 构造函数和拷贝构造函数2. 析构函数3. 赋值运算符重载2. 迭代器的使用范围for遍历和operator[]和operator<<或迭代器进行遍历3. 容量有关的成员函数4. 元素访问5. 用于修改的成员函数6. 字符串操作7. 非成员函数的重载
2025-04-14 23:49:58
1281
33
原创 【linux】linux编辑器-vim的使用及简单配置
一、vim的基本概念二、三种模式的切换三、命令模式命令集1. 定位光标(锚点)2. 行操作3. 字符操作四、底行模式命令集五、vim编辑器的简单配置
2025-04-11 12:24:00
1708
33
原创 【linux】linux软件包管理器yum和安装一些有趣的指令
一、什么是软件包二、windows和linux互传文件1. windows传linux ---> rz指令2. linux传windows ---> sz指令三、yum指令1. yum指令使用的环境2. 查看yum源配置文件3. 查看软件包4. 安装软件5. 卸载软件四、安装一些有趣的指令1. 奶牛说话2. 行驶中的火车3. linux企鹅标识
2025-04-10 20:52:58
1110
21
原创 【c++】模板初阶
一、泛型编程二、函数模板1. 函数模板的概念2. 函数模板格式3. 函数模板的原理4. 函数模板的实例化1. 隐式实例化4. 显示实例化5. 模板函数匹配原则三、类模板1. 类模板的定义格式2. 类模板的实例化
2025-04-09 21:19:30
934
23
原创 【c++】c/c++内存管理
一、c语言内存管理二、一图搞懂c/c++中的程序内存区域划分三、c++内存管理1. new和delete操作内置类型2. new和delete操作自定义类型四、operator new和operator delete函数五、new和delete的实现原理1. 内置类型2. 自定义类型六、定位new表达式七、malloc/free和new/delete的区别八、内存泄露
2025-04-09 00:07:02
1058
25
原创 【linux】linux权限的详细讲解
一、linux下的两种用户及切换su指令1. 普通用户切换root用户的两种方法2. root用户切换普通用户的两种方法3. 对命令进行短暂提权二、linux权限管理1. 权限认证和身份(人)与属性有关2. 文件的类型和权限和访问者和后缀3. 权限的简单使用三、权限的修改chmod指令1. 指定修改的具体权限进行修改2. 使用八进制方式进行权限修改3. 修改文件拥有者和所属组chown指令chgrp指令四、umask指令五、目录的权限六、粘滞位
2025-04-08 11:04:17
1101
42
原创 【linux】linux的基本指令之date 时间戳 cal find grep zip/unzip tar bc unname 常用热键 shutdown 指令运行的原理
一、date指令二、时间戳指令三、cal指令四、查找指令(find which whereis)findwhichwhereis五、grep指令六、zip/unzip指令七、tar指令八、bc指令九、uname指令十、常用热键(Tab ctrl+c ctrl+r ctrl+d)Tab键ctrl+c键ctrl+r键ctrl+d键十一、shutdown指令十二、指令运行的原理
2025-04-06 19:19:10
1096
47
原创 【c++】类和对象(四)初始化列表 explicit static 友员 内部类 匿名对象
一、构造函数二次认识1. 构造函数体赋值二、初始化列表1. 概念介绍2. 要点讲解三、explicit关键字四、static成员五、友元1.友元函数2.友元类六、内部类七、匿名对象
2025-04-05 01:28:20
701
32
原创 【c++】类和对象(三)运算符重载、赋值运算符重载、const成员函数、取地址运算符重载
一、运算符重载1. 概念讲解2. 运算符重载定义在类外3. 运算符重载定义在类里面二、赋值运算符重载1. 概念介绍2. 容易混淆的拷贝构造和赋值构造三、前置++和后置++的运算符重载四、const成员函数五、取地址及const取地址运算符重载
2025-04-02 16:56:06
1080
37
原创 【c++】类和对象(二)构造函数、析构函数、拷贝构造函数
一、构造函数1. 概念介绍2. 要点讲解二、析构函数1. 概念介绍2. 要点讲解三、拷贝构造函数1. 概念介绍2. 要点介绍
2025-04-01 00:42:21
1214
32
原创 【linux】linux的基本指令echo man cp mv cat more less head tail以及重定向操作符 > >> < 和管道 | 的简单介绍
一、echo指令二、输出重定向>,追加重定向>>三、输入重定向<四、man指令五、cp指令六、mv指令七、cat指令八、more指令九、less指令十、head十一、tail十二、管道的简单使用
2025-03-31 00:02:08
1093
32
原创 【c++】类和对象(一)
一、面向过程和面向对象的简单认识二、结构体的升级三、类的定义1. 声明和定义不分离2. 声明和定义分离3. 成员变量命名风格四、类的访问限定符和封装1. 类的访问限定符2. 封装五、类的实例化六、类对象模型1. 类对象的基本模型七、this指针总结
2025-03-29 21:34:36
1137
37
原创 【linux】初识linux及其基本指令ls pwd cd touch tree mkdir rmdir rm
一、linux概念讲解二、操作系统(OS)三、linux的基本指令1. ls指令2. pwd指令3. cd指令4. touch指令5. tree指令6. mkdir指令7. rmdir指令8. rm指令
2025-03-28 23:13:12
892
30
原创 【c++】c++入门之引用、内联函数、auto、范围for、nullptr空指针的介绍与使用
一、引用1.概念讲解2.使用方法3. 引用特性4.const常引用4. 引用的使用场景1. 做参数2. 做返回值5.引用和指针的区别二、内联函数1.概念介绍2. 内联函数的使用3. 内联函数的特点三、auto关键字(c++11)1.auto能使用的场景2.auto不能进行推导的场景1. auto不能用作函数参数2. auto不能用作推导数组四、范围for循环的简单使用(c++11)五、nullptr空指针
2025-03-27 17:31:35
928
28
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人