- 博客(52)
- 收藏
- 关注
原创 VS2022下安装和配置OpenCV环境参数+QT开发环境搭建(1)
VS2022,OpenCV4.5.5版本,QT5.12.12最新版直接下载,根据需要进行下载,我下载的免费社区版本。日常开发完全够用。qt下载5.12版本。OpenCV选择Windows版本下载并解压到本地磁盘,建议路径不带中文。
2024-07-23 20:05:04
294
原创 C++进阶——回调函数详解
总之,所谓回调函数就是把函数当作参数使用。目的是使程序更加普适(正如活字印刷,把可能会“变”的字一个个分离开来,这样就可以任意组合,重复利用)。一般情况下,一个人的小规模程序用不着这种普适性,除非你想把它做成工具箱(比如游戏引擎),供他人使用。
2024-07-10 10:08:51
285
原创 STL——函数对象,谓词
概念:重载函数调用操作符的类,其对象常称为函数对象。函数对象使用重载的()时,行为类似函数调用,也叫仿函数。本质:函数对象(仿函数)是一个类,不是一个函数。
2024-06-22 22:04:48
1234
原创 STL——mulitimps容器
erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。equal_range()函数查找multimap中键值等于key的所有元素,返回指示范围的两个迭代器。empty()函数返回真(true)如果multimap为空,否则返回假(false)。count()函数返回multimap中键值等于key的元素的个数。max_size()函数返回multimap能够保存的最大元素个数。size()函数返回multimap中保存的元素个数。
2024-06-19 21:53:36
901
原创 STL——set容器
在当前集合中查找等于key值的元素,并返回指向该元素的迭代器;● 在当前集合中插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。(应该注意的是在集合(Sets)中不能插入两个相同的元素。● 删除等于key值的所有元素(返回被删除的元素的个数)。返回一个指向大于或者等于key值的第一个元素的迭代器。在当前集合中返回一个指向大于Key值的元素的迭代器。返回指向当前集合中最后一个元素的反向迭代器。返回当前集合中出现的某个值的元素的数目。返回指向当前集合中最后一个元素的迭代器。
2024-06-16 19:31:45
772
原创 STL——list容器
insert()插入元素val到位置pos,或者插入num个元素val到pos之前,或者插入start到end之间的元素到pos的位置。assign()函数以迭代器start和end指示的范围为list赋值或者为list赋值num个以val为值的元素。如果pr返回true则删除该元素。empty()函数返回真(true)如果链表为空,否则返回假。back()函数返回一个引用,指向list的最后一个元素。front()函数返回一个引用,指向链表的第一个元素。pop_back()函数删除链表的最后一个元素。
2024-06-15 21:38:36
627
原创 STL——map
equal_range()函数返回两个迭代器——一个指向第一个键值为key的元素,另一个指向最后一个键值为key的元素。erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。empty()函数返回真(true)如果map为空,否则返回假(false)。value_comp()函数返回一个比较元素value的函数。count()函数返回map中键值等于key的元素的个数。key_comp()函数返回一个比较key的函数。指向map的第一个元素。
2024-06-14 20:52:07
575
原创 STL——Stacks容器
top() 函数返回对栈顶元素的引用. 举例,如下代码显现和清空一个堆栈。所有的这些操作可以被用于堆栈. 相等指堆栈有相同的元素并有着相同的顺序。size() 函数返当前堆栈中的元素数目。如当前堆栈为空,empty() 函数 返回。值压栈,使其成为栈顶的第一个元素。pop() 函数移除堆栈中最顶层元素。push() 函数将。
2024-06-11 19:01:03
330
原创 STL——queues,priority queues容器
语法:&back();back()返回一个引用,指向队列的最后一个元素。语法:empty()函数返回真(true)如果队列为空,否则返回假(false)。语法:&front();front()返回队列第一个元素的引用。语法:void pop();pop()函数删除队列的一个元素。语法:&val );push()函数往队列中加入一个元素。语法:size()返回队列中元素的个数。
2024-06-11 18:58:11
422
原创 STL——Vector容器
assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.=, =, . 要访问vector中的某特定位置的元素可以使用 [] 操作符.reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size)max_size() 函数返回当前vector所能容纳元素数量的最大值(译注:包括可重新分配内存).
2024-06-05 15:38:08
715
原创 STL——初识STL
1. 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据。STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等。2. 算法:各种常用的算法,如sort、find、copy、for_each等。序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。
2024-06-04 14:45:49
305
原创 C++基础——类模板
主要描述的是模板,这个模板是类的模板。可以理解为一个通用的类,这个类中的数据成员,成员函数的形参类型以及成员函数的返回值类型不用具体的指定,这些类型都是虚拟的。在使用类模板进行对象定义的时候,才会根据对象的实际参数类型来替代类模板中的虚拟类型。主要描述的是类,这个类使用类模板进行声明。将类模板中的虚拟类型参数指定成一个具体的数据类型参数。类模板中的成员函数并不是一开始就创建的,在调用时才去创建。1. 指定传入的类型 --- 直接显示对象的数据类型。通过类模板创建的对象,可以有三种方式向函数中进行传参。
2024-05-28 13:37:19
371
原创 C++基础——函数模板
模板体现了泛型编程,泛型编程是编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。在学习泛型编程之前,我们回忆一下怎么实现两个整形,浮点型,字符型的数据交换。因此,C++为了更好的处理这种问题,达到泛型编程的目的,引入了一个概念---模板;
2024-05-21 18:15:00
1010
原创 输入输出系统
外部设备大致分三类:1)人机交互设备 键盘,鼠标,打印机,显示器2)计算机信息存储设备 磁盘,磁带,光盘3)机——机通信设备 调制解调器等1)查询流程保存寄存器内容。
2024-05-20 19:38:58
610
原创 ThingML的学习——在ecplise里面配置maven
前置工作:1.在ecplise里面配置maven之前,首先需要在windows里面下载maven。2.配置环境变量3.修改maven配置文件(最好改为阿里云)1.配置Java环境,需要jdk版的(jar不行)以上不在这里面详细介绍,网上的资料有很多,大家可自己查询。
2024-05-20 07:54:17
187
原创 C++基础——多态(下)
答案:16bytes为什么会是16呢,指针是8bytes。一个含有虚函数的类中都至少都有一个虚函数表指针,因为虚函数的地址要被放到虚函数表中,虚函数表也简称虚表。那么派生类中这个表放了些什么呢?
2024-05-19 15:00:00
735
原创 thingML的学习——什么是thingML
该框架可以将ThingML模型转换成各种语言的完全可操作的代码。目前支持的语言包括C、C++、Java和JavaScript等。该框架由一组代码生成器组成,每个生成器负责编译特定子集的ThingML。这个模块化结构允许对一些扩展点进行自定义,而其他的则可以直接使用。在该框架中有10个不同的扩展点,分为两个组:用于生成“事物”的代码和用于生成配置(或应用程序)的代码。这些扩展点通过接口或抽象类的形式存在于代码生成框架中,并包含了一组方法来生成与给定元素相关的代码。
2024-05-19 09:17:49
736
原创 物联网系统
物联网(Internet of Things,IoT)是指将各种物理设备(如传感器、执行器、嵌入式系统等)通过互联网连接起来,并通过云计算系统实现数据的收集、存储、处理和分析的技术和概念。这些物理设备可以是各种形式的,包括传统的家用电器、工业机器、汽车、医疗设备、智能手机等,它们通过传感器和网络连接收集和交换数据,从而实现智能化、自动化和远程控制等功能。这些物理对象中放置的物联网设备主要分为两类,一类是交换器(用于向其他对象发送命令),另一类是传感器(用于收集数据并发送出去)。
2024-05-18 09:52:01
819
1
原创 C++基础——多态(上)
C++的多态必须满足两个条件:1 必须通过基类的指针或者引用调用虚函数2 被调用的函数是虚函数,且必须完成对基类虚函数的重写子类虚函数可以不写 virtual (实际中最好加上),但是父类虚函数必须写 virtual,才能满足虚函数重写;返回值可以不同,但必须是父子关系的指针或者引用 (在这里的父子没有限制,可以是其他的父子关系),这也称之为协变;class Person //成人public:cout << "全价票" << endl;//成人票全价。
2024-05-17 19:31:05
613
原创 C++基础——继承(下)
1.很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2.多继承可以认为是C++的缺陷之一,很多后来的语言都没有多继承,如Java第一种方式C++98,将基类的构造私有化,派生类继承这个基类,在实例化对象时,需要调用基类的构造,但由于基类的构造已经私有化,故会编译报错。
2024-05-15 22:32:05
1027
原创 C++基础——继承(上)
基类 private 成员在派生类中无论以什么方式继承都是不可见的。这里的不可见指的是基类的私有成员虽然被继承到了派生类对象中,但是语法上限制了派生类对象访问它,无论是在派生类的类内还是类外,都无法访问;如果基类成员不想让派生类在类外访问,但需要让派生类类内可以访问,那么该基类成员就可以定义为 protected,可以看到,protected 在继承角度有着很大的存在意义;
2024-05-14 13:14:28
923
原创 C++基础——友元
程序员可以把一个全局函数、某个类中的成员函数、甚至整个类声明为友元。友元语法:1.friend关键字只出现在声明处2.其他类、类成员函数、全局函数都可声明为友元3.友元函数不是类的成员,不带this指针4.友元函数可访问对象任意成员属性,包括私有属性。
2024-05-11 20:49:56
175
原创 C++基础——this指针
c++规定,this指针是隐含在对象成员函数内的一种指针。当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含指针this,用以保存这个对象的地址,也就是说虽然我们没有写上this指针,编译器在编译的时候也是会加上的。因此this也称为“指向本对象的指针”,this指针并不是对象的一部分,不会影响sizeof(对象)的结果。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。指针是隐含每一个非静态成员函数内的一种指针。
2024-05-10 17:23:55
260
原创 C++进阶——浅谈隐式转化
概念:就是当你只有一个类型T1,但是当前表达式需要类型为T2的值,如果这时候T1自动转换为了T2,那么这就是隐式类型转换。接下来看两个例子,首先是最常见的混用数值类型int a = 0;// int 转换为 longif(a == b)// 默认的operator==需要a的类型和b相同,因此也发生转换int转成long是向上转换,通常不会有太大问题,而long到int则很可能导致数据丢失,因此要尽量避免后者。第二个例子是自定义类型到标量类型的转换。
2024-05-08 18:02:20
710
原创 C++基础——构造函数和析构函数
当我们创建对象的时候,这个对象应该有一个初始状态,当对象销毁之前应该销毁自己创建的一些数据。对象的初始化和清理也是两个非常重要的安全问题,一个对象或者变量没有初始时,对其使用后果是未知,同样的使用完一个变量,没有及时清理,也会造成一定的安全问题。c++为了给我们提供这种问题的解决方案,和,这两个函数将会被编译器自动调用,完成对象初始化和对象清理工作。
2024-05-06 17:24:36
175
原创 C++基础——命名空间
在一段C++代码中,我们会看到using namespace std;这一串代码,那么这一串代码表示什么?namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。
2024-05-05 19:27:31
239
原创 存储器(下)——高速缓冲存储器(Cache),辅助存储器
避免CPU空等现象CPU和主存(DRAM)的速度差异用来保存程序,数据,文档,映像资料,不直接与 CPU 交换信息。如果想要调用,那就先调入到主存储器。
2024-05-04 16:25:37
409
1
原创 存储器(上)——主存储器,ROM,RAM
1)按存储介质分类1))半导体存储器 TTL,MOS 易失2))磁表面存储器 磁头、磁载体 非易失3))磁芯存储器 硬磁材料、环状元件 非易失4))光盘存储器 激光、磁光材料 非易失2)按存取方式分类1))存取时间与物理地址无关(随机访问)随机存储器 在程序执行过程中可读可写只读存储器 在程序的执行过程中只读2))存取时间与物理地址有关(串行访问)顺序存取存储器 磁带直接存取存储器 磁盘3)按在计算机中的作用分类。
2024-05-03 17:17:22
872
1
原创 c++基础——函数高级
基本类型(int char double)和枚举类型一般用值传递结构体, 类的对象一般用指针或引用传递数组类型一般用指针传递小技巧: 当函数参数超过7个以上, 比较多的时候, 可以把它封装在一个结构体中然后传指针或引用。
2024-05-02 16:54:51
371
原创 C++进阶——内存四区详解
栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是 C/C++ 函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分到足够大小的内存,然后进行返回。堆都是动态分配的,没有静态分配的堆。
2024-04-28 15:35:36
449
原创 常用正则表达式
24 备注:这就是最终结果了,别忘了”+”可以用”*”替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里。(包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)(网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)11 可以输入含有^%&’,;
2024-04-27 16:58:38
613
原创 正则表达式
正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。例子:寻找3到15字符数a-z,0-9的字符串。
2024-04-26 15:24:32
791
1
原创 C++基础——引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
2024-04-23 11:35:18
253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人