自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 【QT】窗口|菜单栏|菜单项|工具栏|状态栏|浮动窗口

当然,也可以添加其它widget空间,来达到"永久消息"的效果,比如添加label标签。状态栏是一个输出简要信息的区域,一般位于主窗口底部,一个窗口只能有一个状态栏;() (我们创建项目时如果勾选了.ui文件的自动创建),我们不需要在堆上。只需要在创建菜单项的时候,菜单项的名字后面加个(&+添加的快捷键即可)在创建工具栏的同时,也可以设置工具栏的位置,默认位置是在窗口的最上面;创建,而且这一方式也会造成本身携带的造成内存泄露:(因为,当我们自己。,位于主窗口顶部,主窗口标题下的位置;

2024-07-20 19:45:44 876 1

原创 【QT】常用控件|多元素控件|QListWidget|QTableWidget|QTreeWidget|Widget与WidgetItem|QGroupBox|QTabWidget|布局管理器|万字版

Widget。

2024-07-12 14:53:08 918

原创 【QT】常用控件|QLineEdit|QTextEdit|QComBox|QSpinBox|QDateTimeEdit|计算日期差值|点餐份数|读取文件下拉框(万字详解版)

用于输入整数值的部件,可以通过键盘或者上下箭头按钮增加或减少数字,设置步进值,每次增加或减少的数值量,它常用于需要用户输入整数值的场景。要求输入框输入一个合法的电话号码(1开头,11位,全部为数字),如果验证不通过,按钮无法点击。输入密码,不仅编译器要检查是否一致,用户也要显示查看是否输入错误或查看输入的密码;QLineEdit::password:密码模式,输入的字符会被隐藏;QLineEdit::Normal:默认值,文本框显示输入的文本;添加dial的槽函数,通过value值的改变,触发信号。

2024-07-07 17:17:09 552

原创 【QT】常用控件|QLabel|QLCDNumber|QProgressbar|QCalenderWidget

当我们拖拽修改窗口时,就会触发一系列resize事件,这样的事件,是连续变化的,从窗口大小A~B时,会触发一系列resizeEvent。因为Qt中规定,任何对于页面的操作,必须在主线程完成,如果在自己创建的线程去修改界面元素,Qt程序会崩溃;把label中的文本设置为"快捷键&A"这样的形式 ,&后⾯跟着的字符,就是快捷键,通过。该函数,是父类的一个虚函数,子类重写,多态,一个回调函数。Alignment:有很多对齐方式,左对齐,水平对齐,垂直对齐等。我们想要达到一个效果,让一张图片自适应窗口的变化。

2024-07-04 11:21:43 638

原创 【QT】常用控件|widget|QPushButton|RadioButton|核心属性

的基础组件,它们是实现与用户交互、展示信息、收集输入的关键元素。在使用Qt进行界面开发时,掌握这些基础控件的特性和用法,是构建高效、美观应用的前提。的核心特性,这让控件间的通信变得简单而高效。我们可以轻松地将一个控件的事件(如按钮点击)连接到另一个控件或自定义函数上,实现复杂的交互逻辑。cursor():获取当前widget的cursor属性,返回QCursor对象,当鼠标悬停在widget上时,显示对应的形状。需要设置图标时,依然创建.qrc文件,导入对应图片即可。注意:这里的单位是1ms;

2024-07-02 22:07:11 782

原创 【QT】概述|对象树模型|两种控件模式|信号和槽|lambda

Qt是一个跨平台的C++图形用户界面应用程序框架。在QT中,一个函数对应着一个相对应的头文件,文件和函数名相同;当然了,有的头文件也会隐式包含了其它头文件,所以有些函数不需要特意去包含相对应的头文件。

2024-06-30 12:33:28 942

原创 【C++】二叉搜索树|Key模型|key_value模型|基本操作

BST。每个节点包含一个键(key)和两个指针,分别指向其左子树和右子树。左子树上的所有节点的键值都小于其父节点的键值。右子树上的所有节点的键值都大于其父节点的键值。每个子树也是一棵二叉搜索树。每个节点包含三个部分:一个键(Key),一个值(Value),以及两个指向其子节点的指针(分别指向左子树和右子树)。

2024-06-24 21:38:41 884

原创 【C++】多态|原理|override|final|抽象类|多继承虚函数表|对象模型|虚表打印|(万字详解版)

C++11引入了override和final两个关键字,它们增强了面向对象编程中的继承和多态特性,提高了代码的安全性和可读性。虚函数自身自带一个_vfptr的虚函数表子类虚函数继承父类虚函数时,不仅继承父类虚函数表,也可以对虚函数进行重写。子类虚函数继承父类虚函数时,非虚函数不会存放在_vfptr中虚表存的是虚函数指针,不是虚函数,虚函数和普通函数一样的,都是存在代码段的,只是他的指针又存到了虚表中。另外对象中存的不是虚表,存的是虚表指针。

2024-06-16 13:31:46 665

原创 【C++】继承|切片|菱形继承|虚继承

C++中的继承是面向对象编程的一个重要特性,它允许一个类(称为子类或派生类)继承另一个类(称为基类或父类)的属性和方法。是最重要的代码复用的手段。是一种在原有基础上进行拓展,增加功能,产生新类的方式;体现了由简单到复杂的认知过程。1.基类private成员无论以什么方式继承到派生类中都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。2.基类private成员在派生类中不能被访问。

2024-06-11 22:30:44 952 1

原创 【C++】string|迭代器iterator|getline|find

目录​编辑string1.string与char* 的区别 2.string的使用字符串遍历利用迭代器遍历 范围for遍历 反向迭代器 字符串capacity 字符串插入操作 push_back函数append函数 +=运算符​编辑 insert函数substr函数 字符串查找函数 find函数 rfind函数​编辑 查找函数的使用 getline函数 利用迭代器遍历 范围for遍历 反向迭代器 string - C++ Referenc

2024-05-14 23:03:50 767

原创 【linux】进程概念|task_struct|getpid|getppid

linux下进程的信息可以通过 /proc 系统文件夹查看,该文件夹存放了所有进程的信息,每一个进程的信息都是一个文件夹。每个进程都有自己的内存空间、代码、数据和执行状态。进程的基本特征是对比单个程序的顺序执行提出的,也是对进程管理提出的基本要求。哪个进程调用getpid(),就会得到哪个进程的。当我们运行以上代码,就会建立相应的进程,通过。的数据结构中,可以理解成它是进程属性的。(进程的身份证号,唯一标识一个进程)程序的父进程是谁呢?获得当前进程的父进程的。,基本上所有指令进程的。

2024-05-08 23:08:00 675 2

原创 【linux】环境基础|开发工具|gcc|yum|vim|gdb|make|git

是Linux/Unix 同 Windows进行 ZModem 文件传输的命令行工具。rz可以很方便的从客户端传文件到服务器,sz也可以很方便的从服务器传文件到客户端,就算中间隔着跳板机也不影响。在 SecureCRT 下的传输协议有。

2024-03-20 22:45:05 984

原创 【linux】常见指令 -通配符,数据管道,重定向,压缩打包...

像C语言有句C生万物,linux也有一句话,一切皆文件;linux文件是以树状结构存储。

2024-02-23 14:26:32 843 1

原创 【数据结构】(二叉树)计算结点|叶子结点|高度|第K层结点数

对于深度为K 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对 应时称之为完全二叉树。也就是 说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。前序遍历是先访问根节点,再访问左子树,左子树根结点访问完后 才会访问左子树结点然后右子树结点;4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度h = log2(n+1);2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2^(h-1);左子树结点数+右子树结点数 + 根节点;

2023-12-17 17:45:01 2113

原创 【数据结构】(堆)Top-k|堆排序

n-1是最后结点下标值,(结点-1)/2 可以得到该结点的父结点,从父结点往下调整;假设给定一串数字,4,6,2,1,5,8,2,9;在排序的基础上,如果这个数很大呢,比如一百万个数,要找到前k个较大值;当插入一个新元素时,插入到堆尾,与父结点比较,相应的往上调整。可以假设法:假设较大(较小)的孩子为左孩子,然后验证假设;注意,构建堆的时候,size是最后一个元素的下一个;堆的逻辑结构是完全二叉树,物理结构是一维数组存储;因为堆分为两类,在数据插入时,需要选择适应的调整;父结点 = (孩子结点-1)/2;

2023-12-14 21:47:02 572

原创 【数据结构】面试OJ题—栈-队列-互相实现|循环队列|括号匹配

目录1. 有效的括号思路:2.用队列实现栈 思路:3.用栈实现队列思路: 4.设计循环队列思路:20. 有效的括号 - 力扣(LeetCode)2.用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) 3.用栈实现队列232. 用栈实现队列 - 力扣(LeetCode) 4.设计循环队列622. 设计循环队列 - 力扣(LeetCode)

2023-12-06 11:36:50 1096

原创 【数据结构】(栈|队列)基本功能

是。

2023-12-04 22:00:00 1390

原创 【数据结构】面试OJ题—链表

将没走完的链表直接尾插到新链表后即可;将小的结点尾插到新链表中。

2023-12-04 16:24:42 1231 1

原创 【数据结构】(双链表)增删查改

双链表的引入是因为单链表要访问某个结点的前驱结点时,只能从头开始遍历,访问后驱结点的复杂度为O(1),访问前驱结点的复杂度为O(n)。为了克服上述缺点,引入了双链表。双链表的引进,对于链表的操作有了极大的遍历;链表由单向的链变成了双向链。双向链表(double linked list)是在单链表的每个结点中再设置一个指向其前驱结点的指针域。

2023-11-20 15:07:26 492

原创 【数据结构】面试OJ题—带环链表(数学推论)

1.如果N是偶数,第一轮内就会追上;2.如果N是奇数,C是奇数,第一轮会错过,下一轮会追击(C是奇数,C-1就会是偶数);只存在这两种//快慢指针在这种情况下,该情况其实还可以推论出另一个公式结论。这就是第二题。

2023-11-14 17:01:55 444

原创 【数据结构】(单链表)增删查改

因为顺序进行插入删除时,有时候需要移动大量数据,造成不便,影响了运行效率。这时候引出了它的黄金搭档单链表;通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。一:单链表的特点单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储空间。单链表是非随机的存储结构,即不能直接找到表中某个特定的结点。查找某个特定的结点时,需要从表头开始遍历,依次查找。优点:支持动态内存分配。

2023-11-13 18:47:45 424

原创 【数据结构】(顺序表)增删查改

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么方式构成,以及数据元素之间呈现的结构。能够存储数据(如顺序表、链表等结构)存储的数据能够方便查找。

2023-11-06 19:59:33 557 1

原创 【数据结构】面试OJ题—时间复杂度2

定义两个变量,一个用来遍历数组查看是否有和val值相等的,一个用来记录下来不等于val值的,放入数组中;题目说了 数组1是可以包容数组2进去的,我们可以直接将数组2有效值放入数组1最后一个有效值后。我们可以发现时删除重复项,也就说第一个元素该值都是有效的,可以定义变量从1开始;然后定义遍历变量就行for循环,前后比较,将有效值放到有效位置中。,先将两个数组值合并在数组1中,再直接qsort排序即可啦。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。我们换一种方式,不使用qsort,

2023-10-29 21:00:41 496 2

原创 【C语言】进阶测试 (呕心沥血式讲解)

A:宏定义不检查参数正确性,会有安全隐患B 宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用const常量c 宏的嵌套定义过多会影响程宁的可读性,而且很容易出错D相对于函数调用,宏定义可以提高程序的运行效率A 预处理 B 编译 C 链接 D 执行A 60 B 190 C 248 D 上述答案都不对char a;int b;float c;double d;

2023-10-23 17:30:53 144 4

原创 【数据结构】面试OJ题—时间复杂度

如果其中一个操作数中的位为 0,而另一个操作数中的位为 1,则相应的结果位设 置为 1。相同为0,不同为1 a^a =0;异或运算的规则是:如果两个对应位的数相同,则该位结果为0;0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0,这是异或运算的基本规则。但是此题,又略有不同,因为该数组元素是整型,和上面left,right数值会引起冲突。这两组数组都异或一遍,因为异或的原理,只会剩下只出现一次的那个数字。1异或任何数等于该数的取反,即1 ^ x = ~x。

2023-10-22 20:25:57 476 2

原创 【C语言】进阶——程序编译

define reg register //为 register这个关键字,创建一个简短的名字;) //用更形象的符号来替换一种实现case //在写case语句的时候自动把 break写上。// 如果定义的 stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)。注在宏定义时,最好不要加分号因为宏定义标识符,并不会进行计算,在编译阶段进行的是内容替换int main()if (1)max = MAX;

2023-10-21 17:34:00 229 1

原创 【C语言】——通讯录(静态-动态增长-文件储存)

在之前的篇章中讲述了【C语言】进阶——结构体【C语言】进阶——动态内存【C语言】进阶——文件操作。在本篇运用以上知识结合来写一个小项目——通讯录我会逐步从静态版本优化到动态增加以及最终的文件存储版,循循渐进,详解通讯录的实现实现思路通讯录类似一个复杂结构体,包含了很多信息,以个人信息的通讯录而言,需要包含个人名字,年龄,电话,性别以及地址;而它所具有的基本功能:增(Add)删(Del) 改(modify) 查 (Search);以及我们可以对其一些简单的拓展功能;

2023-10-16 17:54:26 491 37

原创 【C语言】进阶——文件操作

我们平常运行程序的数据都是在内存中,当程序结束后,数据便也不存在了,当我们需要之前的数据时,又需要重新输入,在这种情况下, 将数据保存到文件当中是尤为重要且必须的。(介绍的函数均需要引用头文件<stdio.h>。磁盘上的文件是文件。文件可以是文本文档、图片、程序等等但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。将数据放入文件中,相比代码程序中堆栈上的数据,其优点在于可以随时做到需要时添加、舍弃时删除,数据可以持久化。

2023-10-15 18:15:49 251 4

原创 【C语言】每日一题(半月斩)——day4

不包含回车符。

2023-10-12 21:32:09 268 8

原创 【C语言】进阶——动态内存管理

malloc函数向内存申请一块连续可用的空间,返回这个空间的指针。size为需要开辟空间的字节数malloc开辟的空间并没有初始化!int main()//开辟10个整型大小的空间 赋值给指针p//判断是否开辟成功if (p!for (i = 0;i < 10;i++)//将空间元素置0return 0;如果开辟成功,则返回一个指向开辟好空间的指针如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。

2023-10-09 20:02:21 216 27

原创 【C语言】进阶——结构体+枚举+联合

struct Stu //类型声明//名字int age;//年龄//初始化。

2023-09-25 20:21:55 1419 36

原创 【C语言】进阶——字符串和内存函数

它的第一参数是需要被分割的字符串的首地址,第二个参数也是字符串的首地址(不分先后)sretok函数通过给定的分隔符的字符集合中的字符去把字符串分割成若干个子字符串。mencpy函数是拷贝两块无关的内存区域数据的函数,它会从源数据中的起始位置拷贝。如果字符串2能在字符串1中找到,返回字符串2在字符串1中出现的起始位置;注意如果分隔符的字符集合中的字符不是待分割字符串的字符,是无法分割。它的两个参数都是指针,两个指针分别指向待比较的起始位置,第二个参数是源字符串内容的起始位置,即被拷贝的字符串。

2023-09-20 17:07:57 239 11

原创 【C语言】每日一题(半月斩)——day3

有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。,正确的调用语句是()所以先算后面的 a-=a*a -> a=a-a*a;再算前面的 a+=a-> a=a+a;但是指针变量是可以修改的,也就是指针指向其他变量的。注:数组传参的本质是指针,传递的是数组首元素地址。

2023-09-18 20:22:39 1200 13

原创 【C语言】进阶——指针

在之前【C语言】入门——指针介绍了指针的概念1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2.指针的大小是固定的4/8个字节(32位平台/64位平台)。3. 指针是有类型,指针的类型决定了指针的+-整数的步长,指针解引用操作的时候的权限。4. 指针的运算。这一篇介绍更深度的指针内容。

2023-09-16 17:59:52 573 30

原创 【C语言】每日一题(半月斩)——day2

正确答案:B。

2023-09-14 22:32:56 466 18

原创 【C语言】每日一题(半月斩)——day1

开设这个专栏,是因为刚更新完【 C语言】初阶的内容,马上迈入进阶,可以在学习进阶知识的时候,巩固复习基础。基础要扎实!!!解析: 正确答案B选项B中考察是转义字符,八进制范围是0~7,所以'\8' err\dddddd表示1到3个八进制数如:\130 转义为 字符X\xhhhh表示1到2位十六进制数如:\x30 转义为 字符0补充:字符型数据在内存中存储的是字符的ASCII码值的二进制形式,一个字符的存储占用一个字节解析:正确答案ACDint b;

2023-09-13 20:57:42 1383 59

原创 【C语言】初阶测试 (带讲解)

以下不能使变量 year 中的值增至 1010 的语句是A *p+=1;B (*p)++;C ++(*p)D *p++*p++ p会先跟++结合,就会跳到下一个整型地址,题目要的是通过&year修改值;选D。

2023-09-08 09:39:14 654 25

原创 【C语言】进阶——深度剖析数据的存储

大端字节序存储:把一个数据的低位字节处的数据存放在内存的高地址处高位字节处的数据存放在内存的低地址处小端字节序存储:把一个数据的低位字节处的数据存放在内存的低地址处高位字节处的数据,存放在内存的高地址处//如何判断机器大小端int main()int a = 1;//因为char是一个字节,而int是四个字节//如果是小端 01 00 00 00//大端: 00 00 00 01printf("小端\n");elseprintf("大端\n");return 0;

2023-09-07 14:35:58 362 1

原创 【C语言】——调试技巧

调试:英文DeBug,又称作是除错,是发现和减少计算机程序设备中和电子仪器错误的过程。调试其实就是找出bug,计算机有bug一定是程序的问题。我们的调试环境:VS2019,当然VS系列方法都大同小异,掌握核心方法就行了。

2023-09-05 08:30:00 398 9

原创 【C语言】入门——结构体

在平常生活中,我们记录一个一个学生的信息,往往是每人一张信息卡,这里面记录了名字,身高等信息,这些不是简单的整型,数组就能解决的。函数传参的时候,形参是实参的一份拷贝,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。👍结构体类型的作用域与普通变量的作用域相同:在函数内定义,则仅在函数内部起作用;以上是简单的对C语言中结构体的介绍,不足之处还望指点。结构体和数组不同,同一类型的数据的集合是数组;结构体传参的时候,要传结构体的地址。

2023-09-04 08:15:00 660 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除