- 博客(33)
- 收藏
- 关注
原创 #ifndef, #define, #endif
#ifndef MYCLASS_H检查MYCLASS_H是否已经定义。 #define MYCLASS_H定义了MYCLASS_H宏。 #endif // MYCLASS_H结束了#ifndef开始的条件编译块。关键字解释#ifndef: “If Not Defined”,即“如果没有定义”的意思。 #define: “Define”,即“定义”的意思。 #endif: “End If”,即“结束条件”的意思。
2024-08-25 22:37:39
216
原创 Viusal studio中Release 和Debug版本的区别
Debug 版本更适合开发和调试阶段,它包含更多的调试信息和检查,有助于定位和修复错误。Release 版本适用于最终发布,它经过了高度优化,没有不必要的调试信息和检查,可以提供最佳的性能和用户体验。
2024-08-25 20:11:42
400
原创 在多个源文件中使用同一个全局变量
如果imagInfo只在一个源文件中使用,那么不需要在头文件中声明。如果imagInfo在多个源文件中使用,并且希望确保它只被定义一次,那么应该在头文件中使用extern关键字声明它,并在某个.cpp文件中定义它。如果去掉extern的后果如果你在头文件中去掉了extern关键字,并且在每个包含该头文件的源文件中都定义了imagInfo,那么你会得到一个链接错误,因为每个源文件都会尝试定义imagInfo,导致多次定义错误。// 错误:不应该在这里定义 imagInfo。
2024-08-25 15:31:22
373
原创 将C++源码封装为DLL文件,并提供给接口进行调用
一:封装DLL文件:在Visual Studio中创建工程时,选择动态链接库: pch.h文件中包含所需的头文件以及库文件(opencv)、以及宏定义、需要到导出的库函数的声明。 dllmian.cpp文件中包含要导出文件中函数的实现。 右键工程“opencv_build”,然后点击生成: 在当前工程项目下的x64/Debug目录下就会生成opencv_build.dll文件至此DLL文件就生成了二.测试DLL文件创建一个测试C++的工程,代码如下,包含刚才生成DLL文件中的pch.h头文
2024-08-18 23:50:27
1130
2
原创 MainWindow已经定义了所有的控件了
当使用QtCreater构建好UI界面时,在Ui::MainWindow* ui下的这个MainWindow类,已经包含了在QtCreater中创建的所有的Widget,包括所有的Qlabel、QPushButton等等,只需要记住这个控件的命名是什么就行了,比如CTValue Button、ContrastNoise Button、ImageNoise Button。在编写代码值直接用就行了,因为在MainWindow已经定义好了。
2024-08-09 10:17:52
233
原创 在QtCreater中利用QtDesinger中手动构建UI界面,然后用Visual Studio打开之前创建的Qt工程,继续进行编码
我的上一篇博客中写的是在Visual Studio中配置Qt环境,然后在Visual Studio用代码编写各种UI界面,然后进行后续的编码。但是如果在时间比较紧急的情况下,我们可以直接现在QtCreater中手动画UI界面,然后利用Visual Studio打开之间创建的Qt的环境,进行继续进行代码的编写。
2024-08-09 10:05:14
275
原创 在Visual Studio配置Qt环境
Qt Visual Studio Tool这个插件安装好后,重启一下Visual Studio。至此在Visual Studio中配置Qt的任务完成。至此,Qt配置就算完成了。
2024-08-09 09:29:37
718
原创 QT代码与转换PDF代码字符编码冲突
当他.h文件#include我的QT头文件时,就会乱码,因为我的代码中有#pragma execution_character_set("utf-8"),这就会与她将字符编码设置为国标有冲突。队友在转换PDF时用UTF-8字符编码会导致中文乱码,因此他的字符编码用的是国标。
2024-08-08 10:14:00
217
原创 Visual Studio工程文件拷贝,配置属性依然存在
当别人的创建的Visual Studio工程文件拷贝到我们自己电脑上时,之前配置的工程文件中的。
2024-08-08 10:00:36
252
原创 Day7 赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。因为题目所只有小写字母,那可以采用空间换取时间的哈希策略, 用一个长度为26的数组还记录magazine里字母出现的次数。你可以假设两个字符串均只含有小写字母。依然是数组在哈希法中的应用。
2023-07-20 13:43:53
67
原创 Day7 四数相加II
为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。
2023-07-20 11:37:45
71
原创 Day6 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。给定 nums = [2, 7, 11, 15], target = 9。因为 nums[0] + nums[1] = 2 + 7 = 9。所以返回 [0, 1]
2023-07-19 18:29:23
61
原创 Day6 快乐数
快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。如果 n 是快乐数就返回 True;不是,则返回 False。判断sum是否重复出现就可以使用unordered_set。编写一个算法来判断一个数 n 是不是快乐数。
2023-07-19 15:28:43
51
原创 Day6 有效的字母异位词
示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。你可以假设字符串只包含小写字母。
2023-07-19 11:54:16
50
原创 Day04 链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。
2023-07-18 18:18:18
90
1
原创 Day04 删除链表的倒数第N个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], n = 1 输出:[] 示例 3:输入:head = [1,2], n = 1 输出:[1]
2023-07-18 10:45:05
47
1
原创 Day04 两两交换链表中的节点
/初始化一个虚拟节点//将虚拟节点与头结点连接起来://当头节点为空,就直接返回空结点//当头结点的下一个结点为空,就意为这链表中只有一个结点,此时也不用两两交换了,直返回那个结点就行;//要交换结点,需要提前准备好3个结点;
2023-07-17 18:03:07
61
1
原创 Day3 206.反转链表
题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。
2023-07-15 22:04:40
112
1
原创 Day2 707.设计链表
力扣题目链接(opens new window)题意:在链表类中实现这些功能:2.头插:在链表的最前面插入一个新节点,插入完成后,新插入的节点成为链表新的头结点; 3.尾插:在链表最后面添加一个节点:4.在第index之前插入一个节点: //4.1 index = 0;插入的节点为链表的新头节点; //4.2 index等于链表的长度(size),那么新插入的节点为链表的尾节点; //4.3 index大于链表的长度,那么返回空; //4.4 index小于
2023-07-15 18:13:39
171
1
原创 Day2 203.移除链表元素
题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 2: 输入:head = [], val = 1 输出:[]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]
2023-07-15 17:57:34
67
1
原创 Day01 27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。
2023-07-14 16:06:57
68
1
原创 Day01 704. 二分查找
1.给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。123123说实话,看到本题之后我的第一想法是利用迭代器将vector容器遍历一遍,然后找到Target元素。后来又用了STL中的find函数直接找到目标元素。该题正确的打开方式是:看到有序且无重复元素,就应该想到用二分查找,因为这些都是使用二分查找的前提。
2023-07-13 20:52:17
64
1
原创 字符串输入
cin.get()遇到换行符,会认为是一个空行,会设置失效位,程序直接退出;cin.getline()遇到换行符时,会认为是一个空行,并将空字符串赋值给字符串变量。cin和cin.get()在读取数据后,均会将回车键生成的换行符保留在输入队列中;cin.getline会丢弃换行符,它在存储字符串时,它用空字符串来替换换行符。cin.get和cin.getline()会读取换行符,而cin使用空白(换行符、制表符、空格)来确定字符串的结束位置,但cin不会读取空白。
2023-06-21 15:31:59
112
原创 字符串输入
cin使用空白(空格、制表、换行符)来确定字符串的结束位置。cin不会读取空格、制表符、换行符。cin.get()在读取空行后将会设置失效位,这意味着接下来的输入将被阻断;cin.getline()在读取空行后,将空字符串赋给对应的字符串。,而cin.getline()函数每次读取一行。cin和cin.get()在读取数据后,均会将回车键生成的的。cin.get()与cin.getline()均会。当cin.get和cin.getline()后面。当cin.get和cin.getline()后面。
2023-06-21 15:05:58
78
原创 C++知识点笔记
答:该编译器指令将导致预处理器将iostream中包含的文件添加到程序中。这是一种典型的预处理操作,即在程序编译之前,添加或替换文本。答:在返回值为空void时,可以不使用return关键字。然而,如果不提供返回值,可以使用return结束函数的运行。导致这种问题的原因很可能是什么?答:它使得可以在程序中使用std名称空间下所有定义的名称。5.定义函数时,在什么情况下不必使用关键字return?2.下面的预处理器编译指令是做什么用的?1.C++程序的模块叫什么?3下面的语是做什么用的?
2023-06-15 11:41:29
103
1
原创 4.7 多态
将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商。多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶。静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名。创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口。子类必须重写抽象类中的纯虚函数,否则也属于抽象类。
2023-06-13 09:43:13
62
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人