- 博客(28)
- 收藏
- 关注
原创 C++_模板(进阶)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2024-08-13 19:15:24
828
原创 C++_Stack和Queue
queue的文档介绍priority_queue的文档介绍适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。
2024-08-12 23:06:02
1032
原创 C++_list
迭代器失效即迭代器所指向的节点的无效,也就是该节点被删除了。因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。通过前面例子知道,反向迭代器的++就是正向迭代器的–,反向迭代器的–就是正向迭代器的++,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。
2024-08-10 15:57:00
723
原创 C++_vector
(constructor)构造函数声明接口说明vector()无参构造构造并初始化n个val拷贝构造使用迭代器进行初始化构造。
2024-08-07 14:41:08
870
原创 C++_STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
2024-07-23 21:27:23
374
原创 C++_模板(初阶)
class 类模板名// 类内成员定义// 类模版public:_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲template<class T>//上下T并非一个T,但是并无影响,因为T无非就是一个名字,一个代号。// 扩容++_size;
2024-07-23 17:34:27
405
原创 C++_C或C++内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2024-07-20 10:52:33
941
原创 C++_类与对象(2)
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值。
2024-07-15 17:37:59
685
原创 C++_类与对象(1)
类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stack,那么编译器就把Init当成全局函数,那么编译时,找不到array等成员的声明/定义在哪⾥,就会报错。指定类域Stack,就是知道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。上⾯的程序运行后,我们看到没有成员变量的B和C类对象的大小是1,为什么没有成员变量还要给1个字节呢?类定义了⼀个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。
2024-07-14 16:01:26
802
原创 C++_入门
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的⽣命周期,命名空间域和类域不影响变量⽣命周期。
2024-07-13 11:15:53
1082
原创 QT-学生成绩管理系统
开始编写函数前,我想大家需要先了解数据库,以便后续更好的展开。程序在运行的过程中,数据都是在内存中存储的,但是内存一旦断电就会丢失数据。因此需要持久保存的数据会转交给硬盘。在编程领域,最常用的方式是使用数据库批量的存储大量数据到硬盘。也就是说,数据库是一种电子化的资料柜。数据库产品非常多,主流的包括:MySQL、SQLite、Oracle…这些不同的数据库都是由不同的软件公司开发而来,每种数据库各有差别。IBM公司针对市面上各种不同厂家的数据库推出了统一的操作语言——SQL语言(语句)。
2024-07-10 16:06:01
1404
原创 电赛培训5
PID:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID是经典的闭环控制算法凡是需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点。
2024-04-08 10:42:46
478
原创 电赛培训4
下面我们写一个程序来使得一个灯由亮到灭,一个由灭到亮。将led板的D8,D7连接到板子的PA0,PA1口。8位的PWM,理论的分辨率就是1:255(单斜率)对于PWM方式下,设置PWM模式1或PWM模式2。16位的PWM,理论就是1:65535(单斜率)分辨率也就是占空比最小能达到多少。分辨率 = 占空比最小变化步距。占空比 = TON/Ts。注:有效电平就是高电平。
2024-04-01 10:39:44
216
原创 C语言-编译和链接
在ANSIC的任何⼀种实现中,存在两个不同的环境。1.翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)2.执行环境,用于实际执行代码。
2024-03-27 12:42:41
796
原创 C语言-文件操作
文件是存储数据的单位,它是计算机硬盘或其他数据存储设备上用以记录数字、文字、图形、声音、图像等信息的数据集合。文件可以保存在计算机的硬盘上,也可以储存在其他储存媒介上,如CD、U盘等。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件数据⽂件(从⽂件功能的⻆度来分类的)。
2024-03-27 12:30:10
1835
原创 电赛培训3
STM32F103上包括16个内核中断和60个可屏蔽外部(设)中断;在startup文件中规定了中断向量表,表中的每个item是中断响应函数(中断服务函数的入口地址)当发生中断时,CPU获取中断函数的入口地址,并执行中断服务程序。
2024-03-25 13:01:26
481
原创 C语言-结构体
如果我们能保证将所有的double类型的数据的地址都对⻬成8的倍数,那么就可以 ⽤⼀个内存操作来读或者写值了。4.如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构 体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。3.结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍。Linux中 gcc 没有默认对⻬数,对⻬数就是成员⾃⾝的⼤⼩。2.其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。
2024-03-24 10:27:02
286
1
原创 C语言-数据在内存中的存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存 在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存 在内存的⾼地址处。注意:上文中0x11223344中的44为数据低位字节内容。
2024-03-17 16:05:25
910
1
原创 C语言-内存函数
destination:拷贝目的地source:拷贝源头num:拷贝字节个数注意:此函数遇到" \0 "并不会停下,并且如果destination与source有重叠部分,很可能导致复制出错。结果:1 2 3 4 5 0 0 0 0 0而对于有重叠部分的数组,我们则采取memmove解决。
2024-03-16 14:19:57
381
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人