自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 21.【C++11】(“{}”列表初始化、右值引用和移动语义、引用折叠和完美转发)

C++11引入了多项关键特性。在列表初始化方面,C++11统一了初始化方式,支持内置类型和自定义类型的{}初始化,并引入std::initializer_list支持容器初始化。右值引用和移动语义是核心改进,通过区分左值/右值、左值引用/右值引用,实现了资源的高效转移。文章详细解析了移动构造/移动赋值的实现原理,及其在传值返回和容器操作中的应用场景。此外,还探讨了完美转发机制,通过引用折叠和forward模板保持参数原始类型属性。这些特性共同提升了C++的性能表现和代码简洁性

2025-05-31 18:59:21 431

原创 03.【Qt开发】Qt新建初始代码介绍、实现界面打印helloworld

本文介绍了Qt应用程序开发的基础知识,包括项目结构、编译过程和两种实现"Hello World"的方式。主要内容涵盖:1. Qt项目文件结构(.pro文件配置说明,头文件和源文件组织);2. QApplication核心类的作用。两种实现“helloworld”的方法:1. 图形化界面设计方法;2. 纯代码实现控件创建。

2025-05-29 17:05:11 1007

原创 02.【Qt开发】Qt Creator介绍及新建项目流程

本文详细介绍了Qt Creator集成开发环境的使用方法。第一部分讲解了如何创建桌面快捷方式,并详细说明了Qt Creator的界面布局和功能模块,包括菜单栏、模式选择、构建套件选择器等8个主要组成部分。第二部分重点介绍了新建项目的完整流程:从模板选择到项目配置,详细说明了location、构建系统、Details、Translation等步骤的设置要点。文章还对编辑界面的各个功能区域进行了说明,包括左边栏的文件管理、代码编辑区的导航功能、UI设计界面的组件拖放以及构建区的运行调试选项。

2025-05-27 19:13:01 1186

原创 20.【C++进阶】用哈希表封装myunordered_map和myunordered_set

本文分析了哈希表的实现框架,并模拟实现unordered_map和unordered_set。模拟实现中,通过HashTable模板类复用哈希表功能,分别定义MapKeyOfT和SetKeyOfT仿函数来提取键值。迭代器实现采用单链表思路,难点在于operator++处理跨桶遍历。最终实现的unordered_map支持[]操作符,通过修改insert返回pair<iterator,bool>实现。

2025-05-27 17:15:00 885

原创 19.【C++进阶】unordered_map和unordered_set的使用、哈希表的实现

本文主要介绍了哈希表及其实现方式。首先分析了unordered_set和unordered_map与set/map的差异,包括key要求、迭代器特性和性能比较。随后详细讲解了哈希表的核心概念,包括哈希函数设计(除法散列、乘法散列、全域散列等)、哈希冲突处理方法(开放定址法和链地址法)。重点实现了两种冲突解决方案:线性探测的开放定址法和哈希桶的链地址法,并讨论了扩容策略、负载因子控制等关键技术点。文章还探讨了key类型转换、字符串特化等实际问题,为理解和实现高效哈希容器提供了完整的技术路线。

2025-05-26 17:22:55 1126

原创 18.【C++进阶】封装红黑树实现mymap和myset

本文分析了map和set的源码实现,重点探讨了其核心框架和红黑树(rb_tree)的泛型设计。map和set通过红黑树实现,map存储键值对,set仅存储键。文章还讨论了红黑树的插入、删除和查找操作,并指出源码中命名风格的不一致性。接着,文章模拟实现了map和set,复用了红黑树框架,并通过仿函数解决了插入时的比较问题。最后,文章详细介绍了迭代器的实现,包括++和--操作符的逻辑,并展示了如何通过红黑树实现map的[]操作符。整体上,文章通过源码分析和模拟实现,深入探讨了map和set的底层实现机制。

2025-05-26 17:21:41 583

原创 17.【C++进阶】红黑树实现(二叉搜索树,通过对任何一条从根到叶子的路径上各个结点的颜色进行约束)

红黑树是一种自平衡的二叉搜索树,通过在每个节点上增加颜色标记(红色或黑色)并遵循特定规则,确保树的高度平衡。其核心规则包括:根节点为黑色、红色节点的子节点必须为黑色、从任一节点到其子节点的路径上黑色节点数量相同。这些规则保证了红黑树的最长路径不超过最短路径的两倍,从而维持近似平衡。红黑树的插入操作通过变色和旋转(单旋或双旋)来维护平衡,时间复杂度为O(log n)。与AVL树相比,红黑树的平衡要求较为宽松,旋转次数较少,适合频繁插入和删除的场景。红黑树广泛应用于C++ STL中的map和set等容器。

2025-05-23 12:16:46 1016

原创 16.【C++进阶】AVL树的实现(自平衡二叉查找树,通过控制高度差去控制平衡)

文章讲述了AVL树,AVL树是一种自平衡二叉搜索树。其核心特性是左右子树的高度差绝对值不超过1,通过平衡因子(右子树高度减左子树高度)来维护平衡。AVL树的高度控制在logN,使得增删查改操作的时间复杂度为O(logN),相比普通二叉搜索树有显著提升。插入操作时,按二叉搜索树规则插入后,更新路径上的平衡因子,若出现不平衡则通过旋转(左旋、右旋、左右双旋、右左双旋)恢复平衡。AVL树的查找与普通二叉搜索树相同,效率为O(logN)。以及AVL树的实现

2025-05-23 12:11:24 712

原创 01. 【Qt开发】Qt介绍及Qt开发环境搭建(2025.05最新下载方式)

Qt简介(发展史、支持的平台、版本、优点及应用场景的介绍);Qt SDK安装流程-2025.05最新版官方下载安装流程,包括步骤的详细注释说明。

2025-05-22 18:34:29 1813 2

原创 结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(二)(完整实现流程)

本文介绍了基于MPU6050传感器的体感鼠标驱动程序的实现流程。代码通过I2C总线与MPU6050通信,读取加速度数据并转换为鼠标位移,同时支持按键检测功能。主要流程包括:模块加载时自动注册I2C驱动,设备树匹配成功后执行探测函数mpu_mouse_probe,初始化设备并启动定时器。定时器到期后触发回调函数timer_callback,调度工作队列处理函数accel_work_handler,读取加速度数据并应用低通滤波,最终通过虚拟鼠标控制实现体感功能。代码还包含GPIO初始化、按键去抖动等细节处理。

2025-05-22 08:29:29 893

原创 结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(一)

1. linux嵌入式系统内核介绍,内核程序的编写,包括必要的流程和函数。2. 几个内核驱动的示例:内核获取gpio状态,内核控制led灯,内核实现mpu6050体感鼠标。包括实现流程、代码详解、函数解释、执行指令等。

2025-05-22 08:28:53 643

原创 结课作业03. 混杂设备驱动led流水灯实现

本文介绍了如何在Linux内核中编写一个混杂设备驱动程序(gpios-misc-drv.c),控制3个LED灯。该驱动程序通过写入/读出3个字节来设定和读取3个GPIO引脚的电平状态,每个字节代表一个引脚。驱动程序加载后会自动生成/dev/gpio-misc设备节点。文章详细描述了驱动程序的实现流程,包括模块初始化、GPIO引脚配置、混杂设备注册、文件操作结构体定义以及read和write函数的实现。此外,还提供了一个应用程序(gpios-misc-app)的伪代码,展示了通过调用驱动程序实现流水灯效果。

2025-05-21 15:45:04 943

原创 结课作业01. 用户空间 MPU6050 体感鼠标驱动程序

linux开发板通过uinput创建虚拟鼠标,通过mpu6050的加速度数据控制体感鼠标移动,使用开发板的按键模拟鼠标左右键,包括功能实现流程、函数详解及源代码。完成虚拟体感鼠标功能实现。

2025-05-21 15:41:37 1376

原创 15.【C++进阶】map和set的使用(关联式容器)

文章介绍了C++ STL中的序列式容器和关联式容器,重点讲解了set和map系列的使用。set用于存储唯一键值,map用于存储键值对,两者都支持迭代器遍历和自定义比较函数。multiset和multimap则允许键值重复。文章还详细介绍了set和map的构造、增删查操作,以及如何使用迭代器和[]操作符进行数据修改。最后,通过示例代码展示了如何利用map统计水果出现次数,并对比了multimap与map的差异。

2025-05-20 10:12:21 766

原创 03. Linux嵌入式系统学习笔记(三)(用户空间驱动程序练习:体感光标实现mpu+i2c+framebuffer)

本文章讲解了linux嵌入式开发板的四个实例:1.shell脚本实现流水灯。2.i2c接收mpu6050的数据并转换成加速度打印。3.framebuffer在屏幕映射虚拟内存,操作虚拟内存在频幕上打印光标。4.根据2和3实现体感光标可控制。

2025-05-12 09:00:00 577

原创 0X. Linux嵌入式系统(课堂笔记)

虚拟机linux与开发板通过usb连接;通过网络将虚拟机和开发板进行桥接并实现文件的拷贝提取等操作,在开发板实现白屏、按键使用等案例

2025-05-08 16:19:48 781

原创 14.【C++进阶】二叉搜索树(二叉搜索树的增、删、差及代码实现,key_value的概念及实现)

C++二叉搜索树(BST)是一种有序二叉树,左子树的值≤根节点,右子树的值≥根节点,支持高效查找、插入和删除。理想情况下时间复杂度为O(logN),但若退化为单支树则降至O(N)。插入和查找通过值比较定位位置;删除分四种情况处理,双子节点时采用替换法。文档提供了C++实现代码,并区分了纯Key搜索(如车牌识别)和Key/Value搜索(如字典翻译)的应用场景。由于BST可能不平衡,需进一步学习AVL树或红黑树来优化性能。

2025-04-21 09:09:41 807

原创 13.【C++进阶】多态(多态的定义、概念及实现,虚函数和抽象类)

C++的多态机制,包括编译时多态(如函数重载)和运行时多态(通过虚函数实现)。运行时多态需满足两个条件:基类指针或引用调用虚函数,且派生类重写该虚函数。文件详细解析了虚函数表、动态绑定与静态绑定的区别,以及纯虚函数和抽象类的作用。此外,还介绍了协变、析构函数重写、override和final关键字,并通过代码示例说明多态的实现原理和应用场景。

2025-04-14 09:48:26 809

原创 12.【C++进阶】继承(继承的概念和使用、基类成员的访问、作用域、虚继承)

C++继承的概念和使用、继承基类成员的访问方式的变化、继承类模板;基类和派生类的作用域、隐藏规则;派生类的默认成员函数;继承与友元、继承与静态成员;多继承、虚继承、菱形继承;继承和组合的介绍及代码示例。

2025-04-07 18:33:00 1061

原创 11.【C++】模板进阶(函数模板特化、类模板全特化和偏特化、模板的分离编译)

C++模板的分类:类型形参模板和非类型形参模板。模板特化的概念及使用:函数模板特化,类模板特化(全特化、偏特化)。模板的生命和定义推荐放在一个文件中。模板的优缺点

2025-03-31 14:20:56 737

原创 10.【C++】stack(栈)、queue(队列)和priority_queue(堆)的使用及模拟实现

C++stack(栈)、queue(队列)和priority_queue(堆)的介绍及使用,及通过vector、list、deque的封装模拟实现stack、queue、priority_queue。容器适配器的概念介绍。

2025-03-27 13:19:14 944

原创 00.【Linux系统编程】 Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器)

Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器),华为云免费申请一个月的云服务器;下载Xshell,并通过Xshell连接华为云服务器进行操作。

2025-03-27 13:08:26 619

原创 02. Linux嵌入式系统学习笔记(二)(编写C程序进行文件操作、模块化编程makefile的使用)

Linux系统级文件I/O通过open/read/write/close实现低层文件读写,结合临时文件与rename确保数据安全;模块化编程使用头文件声明接口与源文件分离实现,借助Makefile的变量、依赖规则及自动变量($@, $^)自动化编译,实现增量构建与高效代码管理。

2025-03-26 13:43:22 867

原创 01. Linux嵌入式系统学习笔记(一)(linux基础指令)

本文通过一系列实战练习,系统性地介绍了 Linux 系统管理、Shell 脚本编程及内核源码分析的核心操作。涵盖文件管理、进程控制、网络文件系统(NFS)配置、磁盘镜像操作等基础技能,并结合三个实际脚本案例(贡献者统计、危险函数检测、内核彩蛋查找),深入解析 Shell 脚本的编写与优化方法。

2025-03-21 20:18:39 940

原创 09.【C++】list链表(STL中的列表容器,C++封装的带头双向链表,可实现指定类型的增删查改,迭代器操作等功能)

C++list的介绍及使用,list相当于C++集成的链表的库(list使用模板定义,使用时要指定数据类型),可实现增删查改,迭代器操作等功能。本文介绍了常见list接口的使用以及list的模拟实现。

2025-03-17 11:19:01 784

原创 08.【C++】vector(STL中的序列容器,C++封装的顺序表,可实现指定类型的增删查改、迭代器操作等功能)

C++vector的介绍及使用,vector相当于C++集成的顺序表的库(vector使用模板定义,使用时要指定数据类型),可实现增删查改,空间大小查看,迭代器操作等功能。本文介绍了常见vector接口的使用以及vector的模拟实现。

2025-03-10 18:58:42 574

原创 07.【C++】STL简介和string类的使用(string类对象的输入cin>>、输出<<、尾插+=、访问[ ]、获取对象size、capacity等以及string类的模拟实现)

C++string类的使用,string类的函数,对字符串的各种操作,包括:构造、拷贝构造、获取字符串对象大小size、获取空间大小capacity、string类对象的访问operator[]的运算符重载;string对象的插入insert、尾插append,operator+=、删除erase等;string类对象的cin输入>>,cout输出<<等。本文介绍了常见string接口的使用以及string的模拟实现。

2025-03-03 21:34:28 912

原创 06.【C++】模板初阶(template<typename T>,充分复用函数,函数模板和类模板的使用)

C++函数模板和类模板的使用(用模板解决相同功能的函数处理不同类型变量复用的问题,想一想活字印刷术。想到自己写Swap,需要Swap(int a, int b),Swap(double a, double b),用模板只需要写一个template<typename T> void Swap(T a, T b),可解决上述一类的问题

2025-02-25 10:54:36 982

原创 05.【C++】内存管理(C++内存申请new,释放delete的概念及使用[代替C语言中的malloc和free],递归出现栈溢出的原因)

C++内存申请new,释放delete的概念及使用(用来代替C语言中的malloc和free),堆、栈空间大小,为什么递归时可能出现栈溢出,new和delete的实现原理。

2025-02-17 21:38:47 918

原创 04.【C++】类和对象(下)(初始化列表、static静态成员、友元friend[类外函数使用类私有成员]、内部类、匿名对象等)

C++的初始化列表的使用及约束条件(引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。),类型转换,static静态成员的用法,友元声明(突破类的访问限定符,外部函数可以使用类的私有和保护成员),内部类,匿名对象,对象拷贝时编译器的优化。

2025-02-17 14:21:34 1268

原创 03.【C++】类和对象(中)(构造函数-函数名与类名相同的成员函数、析构函数、拷贝构造函数、赋值运算符重载等定义及使用)

C++默认成员函数介绍及使用,包括:构造函数(函数名与类名相同的成员函数),析构函数(函数名为类名前加~),拷贝构造函数(函数名与类名相同的构造函数的重载),赋值运算符重载,取地址运算符重载。以及日期类的实现(日期加减)。附有相关示例及文字解释。

2025-02-15 16:26:51 1021

原创 02.【C++】类和对象(上)(class类的定义及使用、访问限定符public\private\protected、this指针)

C++类的定义及使用,类中public,private,protected的作用,类的实例化,类实例化对象的存储及内存对齐规则;this指针的定义;C++与C语言实现Stack栈的对比

2025-02-13 16:51:12 651

原创 01.【C++】C++入门基础(namespace、::、<<、>>、cin\cout、&引用、inline、nullptr等概念及应用)

C++基本概念:namespace、:: 、cin、cout、iostream、endl、&引用、inline、nullptr的概念及相关应用。附有代码示例及文字讲解。

2025-02-11 14:31:11 1076

原创 08.七种排序算法C语言实现(插入、希尔、选择、堆排、冒泡、快排、归并)

各种排序算法实现

2025-01-23 21:30:36 1634

原创 07.二叉树

二叉树和堆

2025-01-07 15:26:05 256

原创 06.队列介绍+实现

队列介绍与实现

2024-10-19 17:16:54 392

原创 05.栈介绍+实现

栈介绍与实现

2024-10-19 16:48:30 348

原创 04.单链表实现

单链表实现

2024-10-19 10:22:25 224

原创 03.顺序表实现

顺序表实现

2024-10-18 19:09:03 352

原创 gitee建立/取消关联仓库

gitee远程仓库建立/取消关联

2024-10-18 09:08:09 1504

C++用哈希表封装unordered-map和unordered-set

C++用哈希表封装unordered_map和unordered_set

2025-05-27

C++封装红黑树实现mymap和myset

C++封装红黑树实现mymap和myset

2025-05-26

C++-红黑树的实现完整代码

C++-红黑树的实现完整代码

2025-05-23

C++-AVL树的实现

C++-AVL树的实现

2025-05-23

内核空间 MPU6050 体感鼠标驱动程序

内核空间 MPU6050 体感鼠标驱动程序

2025-05-21

混杂设备驱动led流水灯实现

混杂设备驱动led流水灯实现,该驱动控制 3 个 LED,通过写入/读出 3 个字节来设定、读入 3 个引脚电平。每个字节代表一个引脚。

2025-05-21

用户空间 MPU6050 体感虚拟鼠标驱动程序

用户空间 MPU6050 体感虚拟鼠标驱动程序

2025-05-21

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

2025-05-16

linux嵌入式开发板用户驱动体感光标实现

linux嵌入式开发板用户驱动体感光标实现

2025-05-08

C++二叉搜索树key-value的实现

C++二叉搜索树key_value的实现

2025-04-11

C++二叉搜索树的实现代码

C++二叉搜索树的实现代码

2025-04-11

C++stack(栈)、queue(队列)、priority-queue(堆)的模拟实现

用C++的vector、list和deque实现C++stack(栈)、queue(队列)、priority_queue(堆)

2025-03-03

C++list的模拟实现

C++list的模拟实现,构造,拷贝构造,析构函数;“=”," * ","->"运算符重载;begin(),end()函数;空间容量:size,empty等;增删查改:push_back,push_front,pop_back,pop_front,insert,erase。迭代器和const迭代器实现,用模板复用迭代器类,erase函数调用时iterator迭代器失效等。代码及测试

2025-02-27

C++vector的模拟实现

C++vector的模拟实现,构造,拷贝构造,析构函数;“=”,“[ ]”运算符重载;begin(),end(),函数;空间容量:size,capacity,empty等;增删查改:push_back,pop_back,insert,erase,resize,reserve。代码及测试

2025-02-25

C++string类的模拟实现

C++string类的模拟实现。包括默认构造,拷贝构造,析构函数;运算符重载:=、[ ]、==、!=、<、<=、>、>=;输入输出运算符重载<<、>>;转C字符串c_str()、清空数据clear()、获取字符个数size、提前开空间reserve、尾插字符push_back、尾插字符串append、+=运算符重载、插入insert、删除erase、查找find、复制拷贝substr、输入一行gerline的实现。

2025-02-21

C++日期类的实现,包括日期+,+=,-,-=和&gt;,&lt;,&gt;=,&lt;=,==,!= ;日期 - 日期 得天数 ;流提取&gt;&gt;,流插入&lt;&lt; 运算符重载等

C++日期类的实现,包括日期+,+=,-,-=和>,<,>=,<=,==,!= ;日期 - 日期 得天数 ;流提取>>,流插入<< 运算符重载等

2025-02-15

巡迹小车 - 副本 (2).zip

七路寻迹小车代码

2021-07-26

空空如也

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

TA关注的人

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