自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 右值引用

在上面的代码中,我们用模板参数T的万能引用接收不同类型的数据,就是希望它能将不同类型的数据正确匹配到不同的重载函数。那么这个过程中就会产生一次拷贝构造和一次拷贝赋值,并且编译器不会优化拷贝次数,但是会和上面一样,将返回的。注:如果一个函数的返回值是一个左值引用,那么该返回值就是是一个左值,而不是右值。是一个常量,不能被修改,而左值引用引用的是可以被修改的左值,这显然是不行的。将参数设置为左值引用,并将不会被销毁的返回值对象也设置为左值引用,就。左值引用就是对左值的引用,表示给左值取别名,用。

2025-09-09 19:41:43 926

原创 Qt——界面美化 QSS

设置样式的时候,是可以指定某个控件来设置的。指定控件之后,此时的样式就会针对这个指定的控件和这个控件的子控件同时生效。需要注意,如果QSS和C++代码同时对同一个控件的同一个属性进行了设置,那么QSS的优先级更高。内容区与边框(BORDER)之间的空白区域,用于控制内容与边框的间距,,不影响元素自身大小,但会影响与相邻元素的布局关系(如上下元素的间距由。有时候Qt已有的控件无法满足我们的需求,为了应对这种情况,就需要。是 QPixmap 的子类,用来处理颜色深度为 1 的图像,即。

2025-08-26 11:28:00 1072

原创 Qt——多媒体(音频、视频播放)

要使用多媒体音频功能,需要先引入multimedia模块在camke****setVolumesetSourceplaypausestop使用setSourceplaysetVolume例如,可以实现一个简单的音乐播放器,包含如下功能Widget。

2025-08-25 11:29:57 394

原创 C++ 常见设计模式

这种根据场景动态选择解决方案的思路,正是策略模式的核心思想:将可变的行为封装为独立策略,使它们可以相互替换,同时不影响使用策略的客户端。是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。工厂方法将创建产品的代码与实际使用产品的代码分离, 从而能在不影响其他代码的情况下扩展产品创建部分代码。是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。

2025-08-24 14:19:16 670

原创 C++ 特殊类设计

此外,如果有多个单例类需要创建单例对象,并且它们之间的初始化存在某种依赖关系,比如单例对象A的创建必须在单例对象B之后,此时饿汉模式也会存在问题,因为我们。饿汉模式在程序运行主函数之前就会创建单例对象,如果单例类的构造函数中所做的工作比较多,就会导致程序迟迟无法进入主函数,在外部看来就好像是程序卡住了。因为饿汉模式的对象在程序入口之前就创建好了,此时只有一个主线程,因此。不是函数,而是两个操作符,因此,我们可以通过**禁用****函数返回后,会创建一个临时对象,此时就会。为了解决这个问题,我们需要注意到。

2025-08-24 14:15:19 690

原创 Qt——网络通信(UDP/TCP/HTTP)

要使用Qt的网络通信,要先引入Network模块需要在CMake。

2025-08-24 09:09:14 633

原创 C++面试题——STL,reserve()和resize()的区别

reserve(n)保证capacity至少为n;resize(n)保证容器容纳的元素个数为nreserve()只是对capacity做出改变;而resize()既会改变size,也有可能改变capacity(当当的时候,reserve()不会做任何处理;而resize会删除元素,保证容器容纳的元素个数为****nreserve()只会分配空间,并不会插入数据,因此新空间仍是未初始化的,无法通过下标访问;resize()在分配空间的同时,会插入新数据,可以通过下标访问之间的空间reserve()

2025-08-21 10:36:29 899

原创 Qt —— 多线程QThread

使用Qt的多线程,十分简单,**QThreadrun**,就可以了run()start()run()QThreadtruefalsewait()QThreadrun()truetrueULONG_MAXrun()falsefinished()

2025-08-21 08:56:02 460

原创 Qt——事件&&事件过滤器

同一目标的多个过滤器:后安装的过滤器优先级更高(先执行)。局部过滤器 vs 全局过滤器:局部过滤器(针对单个对象)优先级高于全局过滤器(针对所有对象)。子对象 vs 父对象过滤器:子对象的过滤器(或针对子对象的过滤器)优先级高于父对象的过滤器。

2025-08-20 10:24:06 1160

原创 Qt——文件操作

OpenMode:例如:制作一个简易的记事本。

2025-08-19 21:43:58 539

原创 Qt——对话框 QDialog

对话框问问用于和用户之间进行”可以在创建项目的时候,直接创建一个对话框:实际开发中,更多情况,往往不是直接在创建项目的时候继承自QDialog,而是在代码中创建一个类,继承自QDialog效果::设置对话框属性为:关闭时自动释放内存自定义对话框,新建一个类Dialog,继承自QDialog以图形化界面的方式自定义对话框,关键是要新建一个ui文件和对应的类,步骤如下:创建完成后,就Dialogdialog.h。

2025-08-18 09:49:39 1119

原创 Qt——主窗口 mainWindow

前面学习的所有代码,都是基于QWidget控件,其更多的是作为别的窗口的部分现在来学习,即Menu BarStatus Bar。

2025-08-17 11:54:06 1004

原创 Qt——常用Widget(控件)

需要说明,此处说明的控件都继承于QWiget,因此之前所说的控件属性,和相关API,在这里的控件都适用。

2025-08-15 22:43:22 1111

原创 Qt——控件Widget的常用属性

进入Designer模式后,作坊侧边栏的空间盒子下面的东西,都是Qt已经提供好的控件。

2025-08-13 09:00:00 815

原创 Qt——信号和槽

自定义槽函数在开发中经常用到,因为槽函数,就是用户在界面中执行某种操作后,要执行的业务逻辑自定义槽函数就和定义普通函数一样:myPushButton->setText("点击修改窗口标题");this->setWindowTitle(("新标题"));});delete ui;效果如下:还有另一种更快速的方法可以创建出槽函数,步骤如下:双击widget.ui文件,进入Designer模式 -> 将控件拖放到白板界面中 -> 右击控件 -> 转到槽 -> 选择信号。

2025-08-12 09:44:04 964

原创 Qt——实现”Hello World“、认识对象树与Qt坐标系

在创建项目时,使用的基类Base Class为QWidget。

2025-08-11 15:34:10 880

原创 Qt—— 下载、工具介绍以及新建项目

启动安装程序,按如下步骤安装:配置环境变量:在系统环境变量Path。

2025-08-10 21:00:39 1088

原创 C++ 位图 bitset

N是一个非类型模板参数,表示这个。

2025-03-16 21:13:02 722

原创 C++ unordered_map && unordered_set 模拟实现

移动之后,不为空,说明这个哈希桶(单链表)还没有走完,那么直接返回这个节点即可。下面,我们就通过之前写的基于开散列(哈希桶)的代码,来封装出一份简单的。因此,为了符合规范,我们需要对原先哈希表部分函数的返回值进行修改。,为第一个不为空的哈希桶中的第一个节点;移动之后,为空,说明这个哈希桶(单链表)已经走完了。的接口都是直接调用其内部封装的哈希表的接口。在上面的哈希表代码中,我们直接使用的就是。由于哈希表自己不知道存储的数据到底是。对于哈希表的迭代器,我们只需要关注。:表示要存放什么类型的数据。

2025-03-15 19:20:17 664

原创 C/C++哈希(散列)

哈希函数是哈希技术的核心,它是一个。

2025-03-14 16:26:40 941

原创 Linux——信号signal

如果不想让系统执行信号的默认动作,可以通过系统调用来对指定信号进行自定义捕捉处理signum:信号编号handler:函数指针,指向自定义处理信号的函数返回值:如果错误,返回SIG_ERRint main()//捕捉2号信号,并对其进行自定义处理handlerwhile (1)sleep(1);return 0;运行效果:可以看到,由于我们对2号信号进行了自定义捕捉处理,在进程收到了2号信号后,不会进行默认动作(退出进程),而是按我们定义的方式handler来进行。

2024-12-04 10:43:55 913

原创 Liinux——进程间通信之共享内存与信号量

system V 进程通信是一组在 Unix 和类 Unix 系统中用于进程间通信的机制,主要三种方式:共享内存、消息队列与信号量今天我们一起来对共享内存进行详细的学习,并了解信号量的基本概念我们常说:进程间通信的本质实际上就是让不同进程看到同一份资源。在之前,我们学习了基于文件的进程间通信(管道),今天,我们来学习基于内存的进程间通信:我们可以在物理内存申请一块空间,然后让两个不同的进程通过页表的映射将这个相同的物理内存映射到自己的虚拟地址空间,这样,这两个不同的进程就看到相同的内存资源了。如图:同时我们

2024-11-28 21:32:44 1096

原创 Linux——进程间通信之管道

对于这个问题,答案显而易见:一个进程必然不能解决所有的问题,系统中往往需要多个进程的协作来进行工作,而进程间的协作就需要进程之间进行信息的交互,这个过程也叫做进程间的通信。可以看到:在服务端(读端)打开到客户端(写端)未打开的这段时间中,服务端(读端)并没有打开管道文件,而是等客户端(写端)启动后,再打开的管道。这样,就可以通过子进程向公共文件写数据,父进程向公共文件读数据的方式,进行父子进程之间的通信了。同时也可以推出,在博主所用的系统中,,关闭父进程的读(写)端,关闭子进程的写(读)端,就可以。

2024-11-23 21:33:22 1057

原创 Linux——软硬链接与动静态库

建立软链接的命令:例如我们以给一个文件建立的软链接为例,看看这个软链接和被建立链接的文件有什么不同:可以发现,当我们查看二者的inode时,它们的inode编号是不一样的,这说明了以下几点:那么,软链接存放的究竟是什么呢?通过上面的分析,可以得出结论:同时,我们发现,上面的快捷方式指向的文件实际是在,而一般来说,放在电脑桌面的快捷方式是存放在的,而同样在Linux——磁盘文件中提到过,一个分区就是一个文件系统,因此又可以得出一个结论:建立硬链接的命令:例如:同样,我们来查看硬链接和被链接文件的:可以看到,硬

2024-11-18 18:57:27 999

原创 C++——红黑树

/定义一个枚举类,用于表示颜色enum ColorRED,BLACK//默认该红黑树的存储模型为key_value型//节点默默的颜色为红色: _kv(kv){}

2024-03-27 18:27:46 1074

原创 C++——AVL树

看到这里,相信大家已经对AVL树的结构和特点有了较为深刻的了解,对于AVL树的其他操作,例如删除节点erase(),这里不再讲述,如有兴趣大家可以自行研究。//bf为平衡因子,即[右子树高度 - 左子树高度]: _kv(kv){}public://找到插入位置else//连接新节点else//更新平衡因子,调节搜索二叉树的平衡elsebreak;elsebreak;

2024-03-17 13:20:35 1005 1

原创 Linux——磁盘文件

通过前一篇文章,我们知道了如何对加载在内存中的文件进行读写等操作,并了解了其内在的原理。同时我们也应该清楚,并不是所有的文件都会被加载入内存,而没有被加载入内存的文件,就被存放在磁盘中,称为磁盘文件。现在,就让我们一起来学习磁盘文件的相关知识本片思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至,供免费查阅。

2024-03-12 20:16:52 1500 1

原创 二叉树遍历(前中后序的递归/非递归遍历、层序遍历)

如上图中:A -> B -> C -> NULL -> NULL -> D -> NULL -> NULL -> E -> NULL -> NULL。

2024-03-09 22:05:25 2489 1

原创 C++——搜索二叉树

本章思维导图:注:本章思维导图对应的.xmind和·.png文件都已同步导入至,可供免费查阅。

2024-02-21 19:02:57 989 1

原创 Linux——系统文件I/O

注:学习本次内容之前,最好先对有所了解本章思维导图:注:思维导图对应的.xmind文件和.png文件都已同步导入至,可供免费查阅在以前学习的C语言中,我们可以通过fwrite和fread等各种库函数对系统文件进行读写操作。同时也应该注意到,C语言作为一种用户级语言,其可以利用库函数对系统的底层数据进行各种操作,这个过程中一定会经过操作系统的处理,因此我们可以确定。今天我们就要来学习有关文件操作的系统调用及其背后的细节。

2024-02-16 10:06:01 1415 1

原创 C++——多态

本篇所有的测试代码都是在VS2019的x86环境下运行的,所涉及的指针都是4字节指针。不同环境可能会有所不同。

2024-02-12 17:25:12 935 1

原创 C++——继承

派生类 : 继承方式 基类公有继承public、保护继承protected、私有继承private在日常使用中,一般只会使用public公有继承由于基类成员访问限定符和继承方式二者的相互影响,派生类在继承了基类成员后,继承成员的权限会发生这样的变化:类成员/继承方式public继承protected继承private继承基类的public成员派生类的public乘员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员。

2024-02-10 08:00:00 1038 1

原创 C++泛型编程——模板

注:本章思维导图对应的和文件都已同步导入至资源在C++中,如果我们不借助库函数,要实现两个数据的交换函数,由于要考虑到数据类型的多样性,我们难免要将函数重载很多次,例如:函数的函数体基本相同,只有交换数据的类型不同,但就是由于这个小小的不同迫使我们产生很多冗余代码,使生产效率变得低下为了解决这一问题,C++就支持了泛型编程这一概念:在C++中,泛型编程就是靠模板来实现的基本格式为:基本格式为:例如:注意:用不同的类型使用函数模版生成一个具体的函数这一过程叫做函数模板的实例化,函数模板的实例化有以下两种方

2024-02-08 08:00:00 1538 1

原创 C++适配器——stack && queue

本章思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至,可免费查看。

2024-02-06 19:31:22 815 1

原创 C++——list的使用及其模拟实现

作为标准模板库中的容器,list同样也是一个类模板如果要定义一个list对象,就需要指定其存储的数据类型T。list

2024-01-28 11:32:30 2125 1

原创 Linux——shell程序的简单实现

本章思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至,可免费查阅在学习完有关进程的知识后,我们就可以开始尝试自己实现一个简单的shell程序了。注:在编写简单的shell程序之前,你首先需要掌握:👉👉👉。

2024-01-25 20:39:11 1632

原创 Linux——进程程序替换

本章思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至,供免费查阅。

2024-01-23 17:32:31 1208

原创 C++——vector的使用及其模拟实现

是一个迭代器,其指向原始数据的某一个位置。但是如果要进行扩容操作,由上面的分析可以知道,如果要进行扩容,那么。因此,为了避免迭代器失效带来的影响,我们得遵循以下原则。vector的尾插就和顺序表的尾插一样,就是在最后面新增一个数据。的空间,再将原来的数据复制过来,最后再释放原来的空间。这种内置类型呢,难道它们也有自己的构造函数吗?答案确实如此,为了适应类和对象,我们可以认为。这种自定义类型好说,他们有构造函数,但如果。竟然在插入的时候就出问题了,这是为啥?可以看到,这段代码的逻辑是:先。

2024-01-20 22:34:05 1056

原创 Linux——环境变量与本地变量

本章思维导图:注:本章思维导图对应的.xmind和.png文件都已同步导入至。

2023-12-24 15:25:54 1509 1

原创 Linux——进程地址空间与进程控制

通过上面的讲解,我们知道,要知道代码是否出异常,就需要知道它的异常信号码,要知道它的运行结果是否正确,就需要他的进程退出码。因此,如果想要知道一个进程的执行情况进程退出码和异常信号码。

2023-12-14 18:00:32 1243

C++思维导图Xmind文件和.png文件(持续更新)

C++思维导图Xmind文件和.png文件: 构造函数与析构函数思维导图Xmind文件和.png文件 拷贝构造思维导图xmind文件和.png文件 运算符重载思维导图xmind文件和.png文件 初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类思维导图xmind文件和.png文件 内存管理(new/delete使用详解) 模板——初识 STL——string类 STL——vector STL适配器——stack && queue STL——list C++——继承 C++——搜索二叉树 C++——AVL树 C++——红黑树

2023-10-30

Linux知识点思维导图(持续更新)

Linux——文件权限属性和权限管理 Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作 Linux——编译器gcc/g++、调试器gdb以及自动化构建工具makefile&&make详解 Linux——冯诺依曼体系结构 Linux——操作系统与进程 Linux——进程地址空间与进程控制 Linux——环境变量与本地变量 Linux——进程程序替换 Linux——shell程序简单实现 Linux——系统文件IO Linux——磁盘文件

2023-10-28

空空如也

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

TA关注的人

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