- 博客(43)
- 收藏
- 关注

原创 文件整理
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-10-22 10:35:26
203
原创 学生时代最后一个寒假观书有感
不想低着头用手机敲字记录,还是写在我的博客里吧,顺便练练打字,防止手生。给自己定位1、我们作为企业中的一名员工,在各种变化的浪潮中,应当知道如何自我领导,引用文中原话——你必须时时乐见改变,但不要被改变支配。2、如今的领导人是合作的胜利者,而非竞争的胜利者。真正“智者生存”的道理,这是一种体谅、合作、知识与理性的哲学观。3、仍是知识就是力量么?必然。必须学习,不局限于学校书本内容。坚持学习,相信自己值得花那么多的时间和努力。有一定的底蕴后,可以继续深入,也可以转换状态投入到实际实践中。学习的知识提供
2021-01-27 21:49:22
343
2
原创 全局变量!容器全局灾难了!
我发现!一直都知道我的程序vector有问题,会out of range,今天重新看,突然发现,我把vector放在全局变量里,那么我用定时器进行存数据时,函数体内的可以释放,但全局的一直在往里push东西,最后炸掉了。我这个vector不需要与其他函数体共享的,而且,是一个实时的存取,没有必要留存之前数据的。所以!全局变量也不是那么好的,不要一味的觉得,全局之后了可以实现本文件内的一个数据共享,为了省力,就直接设置全局,会有坑的。...
2020-11-13 16:34:42
762
原创 Qt信号与槽传递参数(先唠叨下现状吐槽下自己)
秋招顺利结束了。。。还行,挺顺利的,提前批就有不错的offer在手,选了跟文双同行业,可能也是跟我自己做的东西更相近的。再一个呢,觉得他家招聘工作做的还行,喜欢流程快的,行就行,不行就不行,具体的招聘细节,其实还是有点粗糙的,不过okkk。华为过了但没有杭州的岗位,多少有点可惜,面试流程非常好,一天走完给结果,但是这个招聘流程,真的是最乱的,懂得都懂。工作签了就放纵了,哈哈,也是正常,得开始搞毕业的东西了。毕业说难难,说简单简单,anyway,相信自己,okkk。那么qt这个信号与槽机制,是怎么传递参数的呢
2020-11-09 14:55:44
4235
原创 C++用默认拷贝构造函数引起的内存泄漏
当对象中存在指针成员,利用已有对象初始化新对象,调用拷贝构造函数。拷贝构造函数形参(const T& )。必须显示声明拷贝构造函数,重新申请内存,不然就是浅拷贝指针成员,导致,两个指针成员指向相同的地址,当一个成员执行析构函数释放内存后,另一个成员执行析构函数再次释放已经释放的内存,出现问题。例子程序如下:...
2020-09-05 20:33:50
708
原创 C++函数返回值,函数返回引用,函数返回const值,函数返回const引用
函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本。T f(); 返回一般的类类型,返回的类类型不能作为左值,但返回的类类型可以直接调用成员函数来修改,如function().set_Value(); 返回类类型调用复制构造函数。const T f(); 此种类型与上述第一种相同,唯一不同的是返回的类类型不能调用成员函数来修改,因为有const限定符。T& f(); 返回类的引用可以作为左值,并且返回的类类型引用可以直接调用成员函数来修改,返回的类类型不会调用复制
2020-09-05 16:08:17
829
原创 C++类内虚函数、虚继承内存分布(代码+分布结果展示)仔细坚持看完,必有收获!
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。我们先用好Visual Studio工具,像下面这样一步一步来:先选择左侧的C/C+±>命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。近期的VS版本都支持这样配置。下
2020-09-02 16:01:33
217
原创 C++ const限定(尽可能多的使用它,别怕!好用!)
今天看到一句话,记录一下。const是个奇妙且非比寻常的东西。在指针和迭代器身上;在指针、迭代器及引用涉及的对象身上;在函数参数和返回类型身上;在local变量身上;在成员函数身上。尽可能使用它。这大概就是所有用到const的地方了吧~...
2020-08-31 20:54:09
215
原创 C++双端队列deque,终于对我下手了-内存分配以及操作
一、内存分配deque双端队列容器与vector很类似,采用线性表顺序存储结构。但与vector区别,deque采用分块的线性存储结构来存储数据,每块的大小一般为512B,将之称为deque块,所有的deque块使用一个map块进行管理,每个map数据项记录各个deque块的首地址,这样的话,deque块在头部和尾部都可以插入和删除。而不需要移动任何元素,不需移动其他元素(使用push_back()方法在尾部插入元素,会扩张队列,而使用push_front()方法在首部插入元素和使用insert()方法在
2020-08-17 16:22:45
1250
原创 C++全局变量,static修饰的静态全局变量,局部变量,静态局部变量,静态函数和普通函数。
1、全局变量:存储区在静态存储区。作用域为整个源程序( 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的)。2、静态全局变量:存储区也在静态存储区。static限制作用域,作用域为本文件内有效(定义该变量的源文件内), 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。static全局变量只初使化一次,防止在其他文件单元中被引用。3、局部变量:存储区是栈区,离开函数体就释放内存
2020-08-13 17:17:40
538
1
原创 C++map你真的懂了么?关于key值相同,map会怎么做,覆盖?判断key存在否方法
很早之前看过map的用法,大致会用,后来学了数据结构,我告诉自己,会map了,,,某场面试,面试官的一个问题,让我emm…,anyway,既然有不足,就查缺补漏~1.问题:当map插入数据时,如果key值相同,value值是覆盖么?答:如果key在map里面有的话,不会覆盖之前的value,一般先判断之前有没有数据(见4.),有的话,先删除,再去添加。还有一种方法,可以通过value = map[key],利用[]=来实现覆盖,进行数据的更新。2.代码:#include <iostream&g
2020-08-04 21:31:02
6653
3
原创 C++构造函数不能为虚函数,析构函数可以为虚函数
1、构造函数不能为虚函数:第一种解释:虚函数调用是在某些信息已经确定,再去完成一定工作的机制,允许只知道接口,不知道对象的确切类型。而构造函数是对类对象进行初始化的,创建一个对象,需要知道一个对象的完整信息,尤其是要知道要创建的确切类型,所以,构造函数不应该被定义为虚函数。第二种解释:虚函数的作用是通过子类的指针或引用来调用父类的成员函数,而构造函数是在创建对象时自动调用的,不能通过子类的指针或者引用去调用。第三种解释:虚函数的调用需要虚函数表vtable指针,该指针存放在对象的内存空间中,若构
2020-07-29 14:54:10
704
原创 不能被继承的类(构造函数是关键)
构造函数是继承实现的关键,每次子类对象构造时,首先调用的是父类的构造函数,然后才是自己的,也就是子类的构造函数。 使用友元、虚继承、模板来实现,如下:1、将A的构造函数和析构函数都声明为Private,将B设置为A的友元类,那么B就可以访问A的私有的构造函数和析构函数,B可以正常构造;2、目的使B的子类C不能被正常构造,可以让C直接调用A的私有的构造函数和析构函数,那么就是将B设置为A的虚拟继承类;3、友元关系:单向性,不可继承,不可传递。所以C无法像B一样可以访问A的私有的,所以C调用A的构.
2020-07-29 11:00:23
436
原创 C++socket编程(TCP/IP)
一、socket编程:通常情况下,socket连接就是TCP连接,因此socket一旦连接,通信双方可以开始相互发送数据内容,直到双方连接断开。但实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如:路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致socket连接断开,因此,需要通过轮询告诉网络,该连接处于活跃状态。socket套接字,用于描述地址和端口号,是一个通信链路的句柄。应用程序通过socket向网络发出请求或者回应。socket编程有三种:流式
2020-07-06 20:45:14
1153
转载 C++优先队列priority_queue
原文链接:https://blog.youkuaiyun.com/weixin_36888577/article/details/799378861、操作:和队列基本操作相同:top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容2.定义:定义:priority_queue<Type, Container, Functional>Type 就是数据类型
2020-07-02 12:36:30
165
原创 C++自定义sort()比较函数,涉及静态成员函数和Lambda表达式,整型转字符串型,输入一组整数压入vector
要实现以下sort()的三参数自定义用法,结果报错,如下:经查询:sort()定义:void sort(排序首地址,排序末地址+1,比较函数名称);//比较函数:bool compare(参与比较的第一个元素,参与比较的第二个元素){ return 1st>2nd;//降序,大数在前 //return 1st<2nd;//升序,小数在前}注意:sort()要求函数对象是 ,静态/全局函数指针,非静态成员函数指针不能直接传递给std::sort()。所以报错原因:自定义比
2020-07-01 21:06:58
2612
原创 C++HANDLE的理解
HANDLE:句柄,是WINDOWS用来表示对象的,是一个通用句柄表示。在WINDOWS程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时为他们分配内存,并返回标示这些资源的标示号,即句柄。但是如果这些资源的位置变了呢?HANDLE是固定的,不会变,但是对象的地址会变,当对象在内存中的位置发生改变后,我们不能通过之前的对象指针找到对象。HANDLE能用来记录对象的最新地址。也就是说,HANDLE像是中间商,联络着WINDOWS API和看不见的对象,所以可以通过HANDLE让对象做
2020-06-30 21:17:52
12245
原创 C++迭代器(STL五种)
总:五种不同类型的迭代器,不同的功能,各自重载了相应功能的操作。1、输入迭代器(Input Iterator):此迭代器不允许修改所指的对象,即是只读的。2、输出迭代器(Output Iterator):迭代器所形成的区间上进行只写操作。3、前向迭代器(Forward Iterator):在一个正确的区间中进行读写操作4、双向迭代器(Bidirectional Iterator):在Forward Iterator的基础上提供了单步向后迭代元素的能力。例如:list, set, multiset,
2020-06-29 21:58:07
1157
原创 C++迭代器和指针区别
1、总的说:1)范围——指针属于迭代器的一种(指针可以用来遍历容器[数组])2)功能——迭代器有着比指针更细的划分并对应能力不同的功能(重载不同的运算符)3)行为——迭代器比指针更统一和良好的用法(更轻易使用begin()和end(),不用担心越界)。2、迭代器:1)迭代器不是指针,是类模板,表现的像指针。模拟了指针的一些功能,通过重载了指针的一些操作符,->,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象,
2020-06-29 21:45:53
7414
原创 C++泛型和泛型编程(通俗理解+模板程序)
1、泛型是什么? 泛型编程是什么?实质上就是不使用具体数据类型(int、double、float等),而是使用一种通用类型来进行程序设计的方法,泛泛的描述一下数据,这个方法可以大规模的减少程序代码的编写量。模板函数如下:其中,T是一个占位符(数据类型占位符),也就是说,将来T这个位置是一个真实的、具体的数据类型。所以,可以把T这种类型占位符也称为一种数据类型,就叫泛型(generic type)。使用这种类型占位符的编程方式就叫泛型编程。总之,泛型也是一种数据类型,但它是用来代替所有类型的“通用类
2020-06-29 21:25:57
6670
2
原创 C++bug之vector subscript out of range(遍历二维数组逆序输出)
做的是遍历二维数组,所以八成是我数组行号、列号越界了~让我去找找,再回来总结。我要哭了。。。自己写的真的很难查出问题。。。设断点也不要觉得,有哪个部分自己绝对对,我发现我col算的还是row的值,push_back()的用法还是要很小心的,因为初始化时候设置了初始值,再放的话,很容易出问题,应该直接给值。再或者不要初始化,直接push_back。#include <iostream>#include <vector>#include <queue>#incl.
2020-06-28 15:06:57
1364
原创 C++哈希映射设计键key
当字符串/数组中每个元素的顺序不重要时,可以使用 排序后的字符串/数组 作为键。sort()后,以temp为键。例如:字母异位词分组。如果只关心每个值的偏移量,通常是第一个值的偏移量,可以使用 偏移量 作为键。offset,(x0,x1,x2,x3,x4)——(0,x1-x0,x2-x0,x3-x0,x4-x0)在树种,有可能会希望直接使用TreeNode作为键。大多情况下,采用 子树的序列化 表述更好。在矩阵中,可能用 行索引 或者 列索引 作为键。..
2020-06-23 21:18:49
469
原创 C++链表经典问题(指针)
1、可以同时使用多个指针。需要同时跟踪多个节点,要记住跟踪哪些节点,并可以自由使用几个不同的节点指针来同时跟踪这些节点。同时使用多个节点,取适当的名称,以便调试代码。2、需要跟踪当前节点的前一个节点。无法追溯到链表的前一个节点,因此不仅要存储当前节点,还要存储前一个节点。双链表不同。3、双链表:多一个引用字段,prev,能够知道当前节点 的前一个节点。4、双链表添加节点cur:连接cur 与 (指向)prev和 next,再cur 与(被指向) prev和 next重新连接。5、双链表删除
2020-06-22 12:45:58
460
原创 C++链表快慢指针注意事项
快慢指针注意几点:1.在调用next字段前,始终检查节点是否为空。获取空节点的下一个节点将导致空指针错误。例如:fast=fast->next->next之前,需要检查fast和fast->next不为空。2.仔细定义循环的结束条件while(fast && slow && fast->next)...
2020-06-21 21:58:29
235
原创 C++阻塞非阻塞、异步同步
阻塞、非阻塞强调线程的调用情况。阻塞更加强调在函数返回前线程发生了调度。发送方和接收方是互不影响的。进程切换:系统调用、中断。异步、同步关注数据返回的方式。同步更加强调线程依旧停留在当前线程。发送方和接收方是互不影响的。...
2020-06-21 15:31:32
714
1
原创 C++数组和字符串
数组与集合和列表的不用集合(商店)无序,元素可以无关。列表(购物清单)没有索引。列表元素在内存中可以不连续,比如链表list。数组有索引(内存地址,可以用来访问数组的元素)。数组中的元素在内存中是连续存储的,每个元素占内存大小是相同的。数组C++中,一组数组数据类型相同,Python可以不同。数组访问通过索引数组查找从索引为0处开始查找,最坏情况全部遍历一遍还没有。数组插入插入数组尾部,只需计算数组长度和位置,计算插入元素的内存地址,将元素放入指定位置。插入到数组其他位置,需要将指
2020-06-15 21:57:06
210
原创 C++文件输入输出文件模式
文件模式常量常量含义ios_base::in打开文件,以便读取ios_base::out打开文件,以便写入ios_base::ate打开文件,并移到文件尾ios_base::app追加到文件尾ios_base::trunc如果文件存在,则截短文件ios_base::binary二进制文件文件模式描述文件将被如何使用:读写、追加等。可以合并模式,用法:ofstream fout("bagels",ios_base::out | ios_b
2020-06-14 15:49:57
238
原创 C++数据结构(队列和栈)
广度优先搜索(BFS)常见应用是找出从根结点到目标结点的最短路径。与树的层序遍历类似,越是接近根结点的结点将越早地遍历。如果在第 k 轮中将结点 X 添加到队列中,则根结点与 X 之间的最短路径的长度恰好是 k。也就是说,第一次找到目标结点时,你已经处于最短路径中。节点的处理顺序与它们添加到队列的顺序是完全相同的顺序,即先进先出(FIFO)。使用 BFS 的两个主要方案:遍历或找出最短路径。...
2020-06-09 22:06:35
139
原创 C++11 四种智能指针(new地址给智能指针在析构函数直接释放内存)
将new的地址赋给智能指针,当智能指针过期时候,析构函数将使用delete来释放内存喽~内存自动释放。头文件#include<memory>auto_ptrauto_ptr<string>ps(new string(str)>;share_ptr要使用多个指向同一个对象的指针unique_ptr优于auto_ptr,不需要多个指向同一个对象的指针4.weak_ptr...
2020-06-08 20:01:58
2424
1
原创 C++11 string类知识点
构造函数char alls[] = "All's well that ends well";string six(alls+6,alls+10);```//begin()、end()像指针指向内存中两个位置//一个string对象(假设为five)string seven(five+6,five+10);//不管用//对象名不同于数组名,不会被看作是对象的地址,因此five不是指针//five[6]是一个char值,所以 &five[6]是一个地址string seven(&.
2020-06-08 19:46:10
297
原创 C++异常机制(报错找bug)
调用abort()函数,#include,直接终止程序,没有任何清理工作;或者调用exit()函数,要先释放所有的静态全局对象、缓存、i/o通道。另:assert()可以调用abort()来终止程序运行。domain_error定义域异常:参数不在定义域内invalid_argument:函数传递了一个意料外的值length_error:没有足够空间来执行所需的操作out_of_bounds:指示索引错误runtime_error :可能在运行期间发生但难以预计和防范的错..
2020-06-07 21:04:54
347
原创 数学函数的程序实现
数学函数函数库函数库为math.h、stdlib.h、string.h、float.h常用函数列举int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double e...
2019-12-06 15:12:24
687
2
原创 vector容器(max_element()返回迭代器)
一维数组 取最大值、最小值、位置<span style="font-family:Comic Sans MS;font-size:12px;">#include <vector>#include <algorithm>#include <iostream> int main(){ std::vector<double>...
2019-12-05 19:26:31
2050
原创 C++map容器基本操作大全(定义插入删除遍历清空查找排序)
map容器map映射容器的元素数据是由一个键值和一个映射数据组成的,键值与映照数据之间具有一一映照的关系。map容器的数据结构也采用红黑树来实现的,插入元素的键值不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。由于map与set采用的都是红黑树的结构,所以,用法基本相似。map用法头文件#include <map>基本操作begin() 返...
2019-12-04 16:50:20
1226
原创 open两个外置摄像头
同时开两外置摄像头刚刚解决了笔记本同时打开两个外接摄像头。之前一直是一个能打开,另一个显示灰度图。解决方案:1降低分辨率(没啥卵用)。2usb不用分线器!我知道usb带宽的问题会影响视频的显示,但是忽略了分线器!直接插电脑是可以正常显示的。3内置0外接的降序开2、1开两个。扩展:usb2.0白色 ,usb3.0蓝色倪宝贝建议两个摄像头分线程,待采纳!...
2019-11-25 20:38:50
573
原创 opencv跟踪算法
跟踪算法https://blog.youkuaiyun.com/shujian_tianya/article/details/84558033一篇总结的不错的opencv8种跟踪算法,博主应该是一个很可爱的女孩儿。最近可是惨了,被老师威胁延期。。。...
2019-11-19 14:32:55
188
原创 csdn资料网址备份2019.11.12
学习opencvhttps://www.cnblogs.com/little-monkey/p/7162340.htmlhttps://blog.youkuaiyun.com/qq_41553038/article/details/80048510https://blog.youkuaiyun.com/qq_41553038/article/details/80048510https://blog.csdn.n...
2019-11-12 15:37:23
255
原创 待搞定吖相机矩阵透视变换
相机矩阵内参矩阵、外参矩阵、畸变参数。看到一篇不错博文,里面给了详细的参考博文。如下:https://blog.youkuaiyun.com/zb1165048017/article/details/71104241透视变换由上面博文看到了透视变换的好博文。如下:https://blog.youkuaiyun.com/xiaowei_cqu/article/details/26471527并且关注了这个博主...
2019-10-30 16:58:12
480
原创 RotatedRect类
push_backpush_back() 在Vector最后添加一个元素(参数为要插入的值)rect.push_back(minAreaRect(contours[i]));RotatedRect类RotatedRect是一个存储平面上旋转矩形的类,通常用来存储最小外包矩形函数minAreaRect( )和椭圆拟合函数fitEllipse( )返回的结果。三个属性:.center矩形中心...
2019-10-29 21:48:08
1027
原创 碎碎念
练下打字。。。今天是28号,10月马上就要过去了。。。两天没有写博客,,,因为度过了一个比较愉快的周末。。。实验室聚餐,互相吐槽,聆听他们的心事,后来磊哥发了一条微博:“每个人都是一座孤岛”。因为前些年经历的一些琐事,所以对他说的这句话,不能再同意了。我想我是一个热情的人,对生活中,身边大多数的事情都满怀期待,充满热情。我想我是一个很有韧劲儿的人,可能因为不知者无畏,可能因为很享受解决问题和坚...
2019-10-28 17:12:30
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人