- 博客(15)
- 收藏
- 关注
原创 理解双向链表的优势:利用双向链表实现LRU算法
由于LRU算法的特性,需要不断的对链表进行添加以及移位的操作(添加新入元素,移位:最近访问的元素加到链表头,最近访问的元素要移动到链表尾),所以。所以用双向链表的优势,可以只用一个head头节点就可以用O(1)复杂度查找到链表头与链表尾的位置。接下来从新建LRU链表,添加元素, 移位元素(即最近访问的元素移位)来介绍此算法。
2023-07-13 16:58:56
508
原创 分享一个打印浮点型数据的十六进制形式的函数
话不多说,先上代码inline void printfloat_16(const float fnum){ uint8_t* c = (uint8_t*)&fnum; //指针指向低位字节的地址,所以最先传给c的是低位字节 printf("0x"); for(auto i = 3;i >= 0;i--) printf("%02x",c[i]); //先获得的是低位字节,所以应该把低位字节放在最
2022-04-27 19:34:50
2886
原创 基于LCM(C++)的双机通信测试(linux主机+upboard)
1.测试案例介绍 2.linux主机 subscriber代码 3.upboard publisher代码1.测试案例简绍 (1)upboard连接路由器,linux主机连接路由器wifi,使二者处于同一局域网下 (2)upboard作为publisher,每隔2seconds发布一则消息,linux主机作为subscriber,接收到消息后在终端打印接受的消息。2.linux主机subscriber代码subscriber.cpp#include "subscriber.h"S
2022-04-22 10:40:30
5829
2
原创 用C++写一个简易的矩阵运算类
前段时间做了一个机器人的仿真开发,需要用到矩阵运算,于是自己写了一套,分享出来。easyMat.h:class easyMat {private: uint16_t row; uint16_t col; public: float ** data; easyMat(uint16_t r, uint16_t c); easyMat(easyMat & e); ~easyMat() { for (au
2021-12-08 18:03:55
622
原创 堆排序方法学习记录
1.堆(完全二叉树)中寻找位置需要的三个重要的公式1.结点 i 的父节点为(i-1)/2 (除根节点外)2.结点 i 的左子女为 2i+13.结点 i 的右子女为 2i+22.下滑调整算法siftdown与最大堆的建立下滑调整算法只对局部范围有效。也就是对当前子树(父节点,左孩,右孩)有效,只有进行了交换,算法才会往下滑,所以利用siftdown进行堆建立时,必须从堆的最后一个子树开始(最后一个父节点),逐步向上调整至根节点void siftDown(vector<int> V,
2021-11-21 11:51:59
449
原创 一个C++新建链表时很容易混淆的经典错误
**1.错误:**在作者刷题时,遇到了一个情况,需要用到两个链表去完成一个操作:用first指针储存链表p的首元素的地址,用于做return(函数返回链表首地址),在这个过程中,p在不断的扩展,接收新元素。以下是错误代码:ListNode *mergeTwoLists(ListNode * l1, ListNode * l2) { ListNode *p, *first = new ListNode; int count = 0; do {//此处代码忽略,即p链表扩充的操作,与总结无关
2021-10-20 19:01:47
240
原创 int*与int*&
很多CPPers都会对指针和引用的使用感到头疼,特别是在两者混用的时候。而指针和引用一个最大的用途就是作为函数形参。以下为本人总结的一些int* 与 int*&在作为函数形参的使用中的区别1.int* value指针大家都不陌生,指针在作为函数形参时,最广泛的用途就是传入数组的首地址,进而在函数中对数组进行操作。int Calc(int *value){ //value则为数组value[]的首地址 //可以直接使用value[]操作数组}所以,用int* value作为
2021-09-04 10:50:20
8285
原创 基于FreeRTOS的stm32程序初始化底层搭建(hal库)
采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。**FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。**而且最重要的一点,freertos完全免费,而且非常方便移植,...
2020-03-04 13:02:44
2671
原创 基于HAL库stm32f407FreeRTOS操作系统的麦克纳姆轮PPM遥控OLED实时显示陀螺仪走直线小车
HAl库设置主控引脚接收机用FS- R-XSROLED使用的是9.7寸IIC-OLED陀螺仪是MPU9250小车全部外观贴出部分代码部分开发过程经验总结:1.由于小车用的是麦轮,所以震荡较大,但是接收机这一类精密电子仪器会被震荡影响输出值,所以一定要做好避震。2.麦轮最好加上橡胶轮套,可以加大摩擦的同时,有利于陀螺仪角度闭环pid的整定。贴出源码网盘:链接:https...
2020-03-01 09:50:38
3617
11
原创 stm32驱动mpu6050、mpu6500、mpu9250心得
浅谈自己使用mpu陀螺仪的一些心得。mpu6050/mpu6500驱动这里是用的原子哥的用虚拟IIC驱动mpu6050代码,之前我一直是用硬件IIC驱动,但是听大神说虚拟IIC比硬件IIC要稳定,尝试之后发现确实比较稳定。而且个人觉得由于虚拟IIC可以在任意IO口开设,所以相较于硬件IIC更加方便。另外贴出我使用MPU9250的驱动程序,也是使用了原子哥的,MPU9250是集合了MPU6...
2020-02-11 21:35:53
15203
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人