2.18学习

摘要: 1、deque的底层是map中控器+分段缓存区,map中控器类似于一个指针数组,其中每个指针元素都指向一块缓存区 能使用vector就不要使用deque,因为deque的迭代器比vector复杂 2、vector的分配空间只能增加不能自动减少,如果动态减少可以使用deque 如何减少vector的内 阅读全文
posted @ 2026-02-18 19:14 dd_l 阅读(12) 评论(0) 推荐(0)

vcpkg的配置

摘要: 我们在做项目时,不管多小的,几乎都避免不了要配置库,而平时配置库又是非常麻烦,常规步骤就是:1、从github上找到对应的库,下载下来 2、运行脚本文件 3、然后进入vs对库进行编译,生成对应的lib、dll文件(期间一定有很多报错) 4、把生成的.lib、.dll以及对应的头文件都放到我们需要的项 阅读全文
posted @ 2026-02-17 22:55 dd_l 阅读(199) 评论(0) 推荐(0)

2.11学习

摘要: 1、STL的hashtable的本质是一个vector的哈希桶,桶的数量一直是质数,当需要扩容的时候就还是质数,每个哈希桶中都储存着一个双向链表,这样,如果有两个不同的元素通过哈希函数得到同一个哈希桶的值,那么这两个元素就储存在双向链表中,这样做是为了防止哈希冲突 如果桶中的链表长度超过了预定的阈值 阅读全文
posted @ 2026-02-12 00:22 dd_l 阅读(15) 评论(0) 推荐(0)

2.10学习

摘要: 1、vector,deque由于是内存连续,所以查找效率高,但是如果插入删除的话涉及到内存的移动,故效率比较低O(N),list的插入较简单,查找较复杂,而map,set底层是红黑树,效率比较稳定O(logn) 2、对于vector,deque进行删除元素时,迭代器会失效(因为涉及到内存移动),所以 阅读全文
posted @ 2026-02-10 23:31 dd_l 阅读(14) 评论(0) 推荐(0)

2.9学习

摘要: 1、unorder_map是通过哈希表实现,相对map通过红黑树实现,unorder_map查找的效率更高,但是如果好多键值通过哈希函数得到的都是一个值(极端情况),那查找效率就会降低 unorder_map和unorder_set本质上相同,都是哈希表实现,不过unorder_set中key就是v 阅读全文
posted @ 2026-02-09 14:12 dd_l 阅读(29) 评论(0) 推荐(0)

2.8学习

摘要: 1、map和set底层都是红黑树,对于平衡二叉树和红黑树而言 平衡二叉树和红黑数都是防止出现"树一直添加左孩子或有右孩子变成链表的情况",在插入时可以进行左旋右旋变的更加均衡,二者中平衡二叉树的查找效率最高(因为左右子树的高度差距不超过1),但是插入效率较低(要不断左右旋),而对于红黑树,最长的路径 阅读全文
posted @ 2026-02-09 00:40 dd_l 阅读(7) 评论(0) 推荐(0)

modbus学习第6天

摘要: 继续之前用Qt做的那个代替主站对从站的4大寄存器写入读取的程序,我总共封装了两个类,一个是ModbusPro(只是用来管理ui),一个是ModbusMaster(用来连接从站,写入,读取数据) 本来我是想着用多线程,主线程更新ui,子线程用来连接从站,然后后面越改bug越多,经常出现野指针的问题,我 阅读全文
posted @ 2026-02-08 10:49 dd_l 阅读(15) 评论(0) 推荐(0)

modbus学习第5天

摘要: 今天用Qt实现一个可以通过modbus对线圈寄存器--读写单个寄存器和多个寄存器,离散寄存器--读单个和多个寄存器,保持寄存器--读写单个寄存器和多个寄存器,输入寄存器--读单个和多个寄存器的功能,大概是这么个效果,ui设计好了 用单例模式设计了一个ModbusMaster的类用于连接从站设备以及对 阅读全文
posted @ 2026-02-05 20:29 dd_l 阅读(14) 评论(0) 推荐(0)

2.5学习

摘要: 1、function封装lambda表达式,本来lambda表达式是个匿名函数,通过function可以给lambda赋名 <int(int)>表示返回值为int,传入的参数为int,且这里的&不能改为=,因为第一步fatoral是空的,当执行到fatoral=[&fatoral](int n){} 阅读全文
posted @ 2026-02-05 10:58 dd_l 阅读(9) 评论(0) 推荐(0)

2.4学习

摘要: 1、原子操作:在线程中保护某个数据不被多个线程共享修改,保证在一个线程结束后才能被另一个线程使用 比如count++会先读取,后进行++,最后再放回寄存器,在这个过程如果有其他线程参与就会混乱 atomic count_atomic(0); 定义count_atomic变量为原子变量不被多线程影响, 阅读全文
posted @ 2026-02-04 12:44 dd_l 阅读(13) 评论(0) 推荐(0)