自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树深度计算

本文介绍了两种计算二叉树深度的方法:递归法和迭代法。递归法采用深度优先遍历,通过比较左右子树的最大深度加1返回当前深度;迭代法使用广度优先遍历,借助队列逐层统计深度。两种方法分别通过递归调用和层序遍历实现,最终都能准确计算出二叉树的最大深度。测试用例演示了两种方法在相同二叉树上的计算结果一致,验证了算法的正确性。

2025-05-29 10:00:00 296

原创 使用栈实现队列功能

本文介绍用双栈模拟队列的实现方法。通过设计输入栈(instack)和输出栈(outstack),入队操作直接压入instack,出队时若outstack为空则将instack元素全部转移到outstack再弹出。这种设计使得入队时间复杂度为O(1),出队操作在摊还分析下也为O(1)。关键点在于利用栈的LIFO特性,通过元素转移实现了队列的FIFO特性。文中提供了C++实现代码,并分析了各操作的时间复杂度。

2025-05-28 16:06:04 186

原创 单链表反序实现

摘要:链表反转可通过迭代或递归实现。迭代法使用三个指针(prev、curr、next)逐步调整节点指向,时间复杂度O(n),空间复杂度O(1)。递归法则将问题分解为头节点和子链表,通过递归调用反转子链表后调整指针方向,时间复杂度O(n),空间复杂度O(n)(栈空间)。两种方法最终都将链表反转为5→4→3→2→1的形式,其中递归法需注意每次调用创建新变量和调用栈的特性。

2025-05-28 15:46:34 620

原创 c++算法题

文章摘要:本文讨论字符串替换操作replace的实现方法,重点分析在笔试场景下的可行方案。首先解释了替换操作的定义:若t是s的子串,则用v替换t在s中的所有出现。针对笔试限制,作者提出两种思路:1)通过滑窗遍历记录匹配位置,但实现较复杂;2)更实用的方法是用string的find和replace函数。最后给出具体实现代码,通过循环查找和替换子串,并更新查找起始位置来避免重复处理。

2025-05-26 21:56:50 241

原创 c++算法题

本文探讨了基于数组实现的循环队列操作。队空条件为length=0,队满条件为length=m。插入操作(enqueue)首先检查队列是否已满,未满时在rear位置插入元素,rear指针循环移动(rear=(rear+1)%m),并增加length。删除操作(dequeue)通过rear和length计算队头位置(front=(rear-length+m)%m),取出元素后仅减少length,实现逻辑删除。关键点在于利用取模运算实现指针循环移动,以及通过length变量简化队头位置计算,避免单独维护front

2025-05-26 18:31:11 259

原创 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法

本文介绍了四种统计字符串字符频率的C++实现方法:1)数组索引法,通过ASCII码映射到固定数组;2)std::map容器实现有序键值对统计;3)std::unordered_map实现无序统计;4)std::count逐个字符统计法。每种方法都给出了代码示例和测试用例,处理范围为0-9数字和A-Z字母,忽略非法字符。测试案例包括混合字符、含非法字符及空字符串情况,验证了各方法的正确性。这些实现展示了不同数据结构在字符频率统计中的应用差异。

2025-05-26 17:38:02 659

原创 输入一个字符串,将其逆序后输出

本文介绍了四种反转字符串的方法:1)使用标准库reverse函数直接反转;2)双指针原地交换首尾字符;3)利用反向迭代器构造新字符串;4)递归逆序输出(不修改原字符串)。每种方法都给出了C++实现代码示例,输入"HelloWorld"可输出反转结果"dlroWolleH"。这些方案涵盖了不同的实现思路,包括库函数调用、指针操作、迭代器构造和递归技术。

2025-05-26 17:09:39 145

原创 十六进制字符转十进制算法

十六进制与十进制的转换方法主要包括正序和逆序两种实现方式。正序法从左到右遍历字符串,每次将当前结果乘以16后加上新字符的十进制值。逆序法则从右到左处理,使用动态调整的权值(16^n)进行累加。两种方法都能正确处理0-9和A-F(a-f)字符,并自动跳过"0x"前缀。转换时需注意十六进制是满16进1,其字符集包含0-9和A-F表示10-15。代码实现中避免了使用效率较低的math.pow函数,而是采用更高效的位权累加方式。

2025-05-26 16:41:05 571

原创 选择排序算法研究

本文探讨了选择排序的实现原理与优化思路。作者通过对比物理分割和原地操作两种方式,指出选择排序的核心在于将数组分为已排序和未排序两部分,每次从未排序部分找出最小值放入已排序部分尾部。文章提供了C++实现代码,采用i作为分界点实现了原地操作,避免了物理分割带来的内存开销和复制代价。相比创建两个独立序列的方案,这种实现方式在空间和时间效率上更具优势,只需一次交换即可完成元素归位。

2025-05-25 20:27:02 438

原创 文件系统交互实现

本文介绍了如何完善一个基于QT控件的文件系统程序,主要实现了右键菜单功能,用户可以通过右键菜单对选中的文件或目录进行删除、重命名、新建文件或目录等操作。程序首先通过QMenu和QAction创建了右键菜单,并根据用户选中的项(文件或目录)动态调整菜单项。具体实现包括:判断是否已打开目录、获取选中项的索引、根据文件类型添加相应的菜单项,并通过槽函数处理具体的操作逻辑。例如,删除操作会弹出确认对话框,重命名操作会弹窗输入新文件名,新建文件或目录则会弹窗输入名称并创建。通过这些功能,用户可以更方便地管理文件系统。

2025-05-16 19:47:08 696

原创 论QT6多线程技术

以前我多线程使用传统的继承qthread重写run()或者继承qrunable类把对象丢到线程池解决。经过昨天的面试让我了解到新的技术,我之前看到过只不过没有详细的去了解movetotread技术,这个技术是qt5推出的,qt6还在延续使用。

2025-05-15 17:18:14 541

原创 今天面试遇到的一些问题

作者在武汉的首次面试中感受到了激烈的竞争和较高的技术要求,相较于杭州更为严峻。面试中遇到了多个技术问题,包括控件操作、数组查找、线程管理、数据类型大小、信号槽连接、集合操作、联合体使用以及项目经历的详细梳理。作者意识到自己在某些技术细节上的生疏,并计划在接下来的时间里针对这些问题进行深入研究和复习,以提升自己的技术熟练度和面试表现。

2025-05-15 01:11:02 234

原创 QT控件文件系统的实现

本文介绍了如何使用Qt的Model-View模式实现文件系统管理,主要涉及QFileSystemModel和QTreeView的配合使用。通过QFileDialog实现目录选择功能,点击按钮后弹出对话框,用户选择目录后,QFileSystemModel会更新根路径,QTreeView同步显示。代码展示了如何设置根路径、绑定视图更新以及显示当前目录。此外,还介绍了如何通过setFilter()过滤文件类型,以及如何通过模型索引获取文件信息。文章还提到启用QTreeView的编辑功能,支持双击重命名,并提供了添

2025-05-15 00:43:49 371

原创 QListWedget控件使用指南

文章介绍了QListWidget类及其相关函数的使用方法,包括如何创建、添加、删除和操作列表项。QListWidget是一个用于显示和管理列表项的控件,支持添加、插入、删除、排序等操作。文章还展示了如何在UI界面中初始化列表项,并通过按钮点击事件动态添加或删除项。此外,文章提醒在UI界面中已自动连接的槽函数无需再次手动连接,以避免重复触发信号。通过示例代码,详细说明了如何实现这些功能,并提供了调试信息以帮助理解操作过程。

2025-05-14 23:04:50 1012

原创 运动控制插补--逐点比较法

在数控机床中,钻头在微观视角下并非直线移动,而是呈现阶梯状路径。通过直线插补的逐点比较法,根据偏差在x或y方向给予脉冲,逐步接近目标。以起点O(0,0)和终点A(6,4)为例,通过偏差公式F=F-|ye|或F=F+|xe|,逐步计算并调整钻头位置。每一步的偏差判别、坐标进给、偏差计算和终点判断共同决定了钻头的实际运动轨迹,最终形成一条接近直线的折线路径。这一过程展示了数控机床在微观层面上的精确控制机制。

2025-05-12 16:48:44 361

原创 opencv处理图像(二)

在程序线程设计中,主线程负责图形渲染,而OpenGL和OpenCV技术用于图像处理。考虑到资源浪费和线程管理问题,不建议为OpenCV单独创建线程。通过继承QThread并重写run()方法,可以在子线程中处理OpenCV逻辑,并通过信号传递结果。线程池技术(如QThreadPool)更适合处理短暂、离散的任务,通过复用线程减少开销。对于图像处理任务,可以定义任务类并提交到线程池,避免频繁的深拷贝操作。主线程负责用户交互和结果展示,而线程池中的工作线程执行具体的图像处理任务。这种设计提高了资源利用率和程序性

2025-05-10 16:07:52 462

原创 opencv处理图像(一)

本文介绍了一个基于C++和Qt6开发的图像处理项目设计。项目中,主线程使用OpenGL渲染图像,同时通过OpenCV进行图像处理任务,如高斯模糊和图像轮廓提取。OpenCV任务通过线程池异步执行,处理结果通过信号槽机制传回主线程。文章还详细讨论了OpenCV中Mat矩阵与OpenGL在图像通道和坐标轴上的差异,并提供了高斯模糊和灰度图转换的具体实现方法。最后,作者提到线程设计部分尚未完成,计划后续补充。

2025-05-10 02:06:46 618 1

原创 qtcreater配置opencv

qtcreater配置opencv,经过实践成功

2025-05-09 16:21:54 1605

原创 图形渲染+事件处理最终版

我们设计他的逻辑是鼠标左键按下以后,m_lastmousepos会记录鼠标的当前位置,然后鼠标拖动,用现在鼠标的位置-上次鼠标的位置得到的是一个移动路径的向量,注意这里操作角度用的数据都是向量,然后更新旋转矩阵{x,y,z},绕x轴正向旋转就是m_rotationangles.x()+delta.y()*0.5f,为什么加的是delta的y,可以试着想一下,想让三角形绕x轴旋转不就是用鼠标向上向下移动。我这里就把他后移了三个单位,十分简陋,因为设置了和没设置没区别,就懒得设置他了,我这是不是有些敷衍哈哈。

2025-05-08 23:35:05 361

原创 图形移动处理

本项目是基于qt6和OpenGL实现,对之前项目新增了键盘鼠标事件,实现控制图形大小移动等变换操作。

2025-05-08 19:06:36 347

原创 结合OPenGL绘图渲染实现

qt6结合opengl绘制三角形

2025-05-06 17:45:44 889

原创 纹理过滤方式和纹理包裹方式

临近过滤(Nearest)和双线性插值过滤(Linear),什么时候用什么过滤方式其实看个人选择,区别就是临近过滤是当需要的像素大于图片像素时候,一些像素点需要复用与他相近的图片像素颜色,如果复用的过多会导致图片像素感较严重,如果想要平滑点就用双线性插值过滤。当图片像素>需要像素时:使用Nearest。当图片像素<需要像素时:使用Linear。

2025-05-03 10:00:00 146

原创 纹理对象创建

纹理对象通俗点就是贴图,像游戏的皮肤什么就是纹理。一旦纹理生成并且数据完成传输,纹理对象就没有存在的必要了,我们就可以将内存中指针指向的这一片数据给他释放了。

2025-05-02 21:15:16 520

原创 EBO的使用

比如在OpenGL绘制三角形的时候,假设有四个顶点,我称他们分别为1,2,3,4号顶点,常规绘制三角形函数是按三个点为一组,{1,2,3,4},他就只会绘制123为三角形,4就不管了,如果我们想拿一个共用边加上4绘制三角形比如拿12边,就需要写成{1,2,3,4,1,2},他不够灵活,像这样存储的话,如果每个顶点还有颜色什么的数据就会导致需要的内存过大,这里就用到EBO了,顶点数据差不多,区别就在于当引入顶点的时候只需要存储顶点数据,其他的属性通过绑定VAO实现可重复调用,以达到节省内存的作用。

2025-05-02 00:11:21 342

原创 VAO与VBO的相关操作

在OpenGL的学习中了解到了VAO与VBO的概念。

2025-05-01 14:36:02 233

原创 QT6链接mysql数据库

如果是ubantu linux系统就按照这个做:(这里要注意一下,他后面有个地方说要创建一个build目录,然后cd到build目录中,中间应该是省略了复制的步骤,我是直接在sqldrivers那里编译了)参考我发的链接问题就能解决,为了避免链接变成vip文章,后面我自及也会整理一篇完整的流程出来,如果觉得我的文章对你有帮助请不要吝惜你的一件三联哦。qt6中是删除了MySQL数据库驱动的,如果需要我们要自己去下载驱动原文件编译。下面是我的整理,血的教训,按照我筛选的能解决。

2025-04-29 16:40:47 168

原创 c++插入排序原理及实现

插入算法的原理及实现

2025-04-20 00:54:29 111

原创 C++选择排序原理及实现

选择排序的原理及实现

2025-04-19 19:55:36 255

原创 c++冒泡排序实现

冒泡排序的原理及实现

2025-04-19 17:52:57 241

原创 QT网络拓扑图绘制实验

网络拓扑图绘制

2025-04-19 14:09:25 1414

原创 C++二叉树以及相关遍历的实现

该程序实现了一个二叉树(btree)类,支持节点的创建、删除以及前序、中序、后序遍历查找功能。

2025-04-16 17:33:44 870

原创 C++STL循环队列实现

循环队列又称环形队列,这里采用STL中vector和deque两种底层容器来实现

2025-04-15 09:37:16 1196

原创 C++循环链表

循环链表是单链表和双链表的一种演化,原理是一样的,只是逻辑上需要改一下,像单链表,他的结构是头节点->尾节点->nll,循环链表只需要把尾节点的next由原来的指向null改为指向头节点,遍历链表的时候,到null会判定遍历结束,而循环链表是回到头部节点的时候遍历结束,这里要注意设置好遍历逻辑,不然会出现死循环。双链表的循环同理,这里就不去实现它了,想学习实现他参考我之前写的单链表和双链表实现的文章,里面有程序,拿出来改下逻辑就行了,这里就介绍一下。

2025-04-15 08:00:00 254

原创 c++队列的实现

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

2025-04-14 18:51:19 649

原创 C++智能指针介绍

C++智能指针是用于自动管理动态内存的工具,通过RAII(Resource Acquisition Is Initialization)机制确保资源在不再需要时被正确释放,从而避免内存泄漏。

2025-04-14 08:00:00 678

原创 移动语义介绍

移动语义通过转移资源所有权而非拷贝,极大优化了C++程序的效率。理解右值引用、

2025-04-14 08:00:00 382

原创 C++双链表介绍及实现

双链表的介绍以及实现,用到智能指针,需要有一定基础

2025-04-13 21:58:14 1370 1

原创 单向链表的实现(C++)

单向链表的介绍与实现

2025-04-13 15:57:43 820

原创 C++栈链的实现(链式栈)

定义一个结构体实现栈的定义,链式栈是以节点为单位,每个节点包含data值和next指针指向下一个节点,因为是栈结构,遵循后进先出的原则,栈顶指针指向头节点。(动态节点链接)存储数据,通过指针管理栈顶元素。(可能不适用于非整型数据)

2025-04-12 03:11:58 650

原创 C++顺序栈的实现

STL顺序栈介绍及实现

2025-04-11 18:50:50 937 1

基于qt的文件系统的交互实现

添加了菜单栏处理treeview交互

2025-05-16

论QT6多线程技术,采用movetothread实现

movetothread的简单代码实现

2025-05-15

QListWedget控件使用指南

qlistwidget使用指南

2025-05-14

图形渲染+事件处理最终版

OpenGL绘制渲染+纹理+投影+摄像机+事件处理最终版

2025-05-08

OpenGL基于qt6绘制并添加鼠标键盘事件

opengl version4.6 qt 6 gpu驱动我是最新的大约5.几以上 环境方面

2025-05-08

结合OPenGL绘图渲染实现

仅可用于学习

2025-05-06

C++STL循环队列vector实现

C++STL循环队列vector实现

2025-04-15

C++双链表介绍及实现

C++双链表介绍及实现,采用智能指针管理节点生命周期

2025-04-13

单向链表的实现(C++)

单向链表的介绍与实现

2025-04-13

C++栈链的实现(链式栈)

C++栈链的实现(链式栈)

2025-04-12

数据结构C++顺序栈的实现

C++顺序栈的实现

2025-04-11

ESP8266水位监测以及温湿度数据采集

ESP8266水位监测以及温湿度数据采集

2025-04-10

AT固件烧录和串口打印软件

AT固件烧录和串口打印软件

2025-04-10

基于Qt的串口通信工具

串口AT操作调试程序

2025-04-09

QT6使用摄像头拍照和录制视频程序

qt6使用摄像头拍照或者录制视频,可以学习,不得商用

2025-04-05

QT6 C++视频播放器实现(基于QGraphicsVideo)

QT视频播放器实现(基于QGraphicsView)

2025-04-03

基于QT C++的视频播放器实现(QWidget窗口)

禁止商用

2025-04-01

QT基于TCP传输控制协议实现(客户端)

禁止商用,可用学习

2025-03-30

基于Qt框架的音频采集与播放工具

本人创作,禁止商用

2025-03-30

基于QT6C++录制音频图形化程序,功能做的很完善

根据客户自定义实现音频录制的程序,想练手的可以看看,注解写的很详细

2025-03-25

QT基于TCP传输的实现(服务器端)

服务器端程序,禁止商用

2025-03-16

QHostInfo和QNetworkInterface的应用

禁止用于商业行为

2025-03-11

QT基于信号量的线程同步

基于信号量的线程同步源码

2025-01-02

QT基于互斥锁的线程同步

基于互斥锁的线程同步源码

2025-01-02

QThread的初步使用

掷色子程序源码

2024-12-26

空空如也

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

TA关注的人

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