自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Qt】Qt开发中常用命名规范、快捷键和窗口坐标体系详解

Qt是一款强大的跨平台C++应用程序开发框架,为了提高代码的可读性和可维护性,遵循一定的命名规范是非常重要的。此外,Qt Creator提供了许多快捷键和便捷功能,能够提高开发效率。本文将介绍Qt开发中常用的命名规范、快捷键以及窗口坐标体系的相关知识。

2024-04-29 16:05:16 314

原创 【Qt】Qt界面构建指南:实现Hello World的多种方式

本文将介绍如何在Qt中使用编辑框和按钮来实现Hello World的功能,并对纯代码版面和图形化界面版本进行比较。通过示例代码和说明,读者将了解如何使用Qt中的控件和信号槽机制来构建简单的用户界面。在Qt中,可以通过编辑框和按钮等控件来实现Hello World的功能。使用编辑框时,可以选择单行编辑框(QLineEdit)或多行编辑框(QTextEdit),通过纯代码或图形化界面两种方式进行界面构建。

2024-04-29 12:43:29 1041

原创 【题解】NC40链表相加(二)(链表 + 高精度加法)

【代码】【题解】NC40链表相加(二)(链表 + 高精度加法)

2024-04-21 22:54:14 130 1

原创 【题解】NC1 大数加法(高精度加法)

【代码】【题解】NC1 大数加法(高精度加法)

2024-04-21 22:47:56 225

原创 【Qt】Qt界面构建与对象管理:从 “Hello World“ 到内存释放

在软件开发中,构建用户界面是至关重要的一步。Qt作为一个跨平台的C++框架,提供了强大的界面构建工具和对象树管理机制,使得界面开发变得简单高效。本文将介绍两种实现 “Hello World” 界面的方法:一种是通过图形化界面创建控件,另一种是通过纯代码方式创建控件,并探讨了Qt框架中的对象树管理机制与前端开发中的DOM对象树的类比。

2024-04-21 16:49:49 1188

原创 【Qt】探索Qt框架:跨平台GUI开发的利器

Qt是一个跨平台的C++图形化界面应用程序框架。框架:本质上就是一群大佬发明出来的,方便咋们普通程序员,写出来的代码比较靠谱。(限制程序员的自由)库 vs 框架都属于: 大佬吧一些代码写好了,让你去使用。库: 被程序员调用的。(程序员是主题)框架: 则是占主体的,程序员配合框架,完善填充框架中的一些细节。Java对于框架更加依赖,编写C++代码,框架也很重要,C++生态是割裂的,离散的,不像Java。C++存在一些巨无霸社区/大厂,有各自的框架。

2024-04-21 11:13:54 1115 4

原创 【题解】NC398 腐烂的苹果(多源BFS)

从每个腐烂的苹果开始使用广度优先遍历(bfs)

2024-04-19 16:36:32 208

原创 【题解】NC242 单词搜索 (DFS)

采用深度优先遍历(dfs),进行遍历判断是否出现在数组中。

2024-04-19 16:15:44 193

原创 【算法】深度优先遍历(DFS)算法详解与实现

深度优先遍历是一种重要的遍历算法,对于理解树和图的结构及其应用具有重要意义。通过掌握深度优先遍历的原理和常见实现方式,能够更加深入地理解算法的本质,并能够应用于解决各种相关问题。

2024-04-19 08:44:45 920

原创 【题解】AB5 点击消除(栈)

把string当栈用,扫一遍就可以了,时间复杂度O(n)

2024-04-16 20:44:01 252

原创 【算法】深入理解二分查找算法及其应用

if (/* 检查目标值是否满足条件 */) {} else {查找区查找区间的右端点的模板if (/* 检查目标值是否满足条件 */) {left = mid;} else {助记:让下面出现-1的时候,上面就+1。eg3: 搜索插⼊位置public:// 找到区间左端点eg4: x 的平⽅根public:// 处理边界情况// 用long long mid*mid防止溢出。

2024-04-16 20:42:43 423

原创 【Linux】探索进程间通信与管道:构建高效系统的关键

在计算机系统中,进程间通讯是至关重要的概念。多任务操作系统中,各个进程需要交换数据和协作,以完成各种任务。然而,由于每个进程拥有自己独立的内存空间,直接传递数据并不容易。为解决这一难题,人们发明了各种进程间通信(IPC)的机制和方法,如管道、共享内存、消息队列等。而管道作为其中一种重要的进程间通信机制,在实际编程中被广泛应用。管道可以实现进程之间的数据传输,使得它们能够协作执行任务,提高系统的效率和灵活性。两个进程之间可以进行"数据"的直接传递吗?不能!进程只有独立性!

2024-04-16 20:32:17 444

原创 【题解】数组中两个字符串的最小距离(模拟 + 贪心)

【代码】【题解】数组中两个字符串的最小距离。

2024-04-16 15:11:24 183

原创 【题解】BC64 牛牛的快递(C++)

函数用于返回大于或等于指定浮点数的最小整数值。

2024-04-16 15:05:33 187

原创 【Linux】深入解析进程控制:创建、终止、等待与替换的原理与应用

进程控制是操作系统中的一个核心概念,涉及到进程的创建、终止、等待以及程序替换等方面。本文将介绍进程创建、终止、等待和程序替换的相关内容,包括fork函数的原理、写时拷贝机制、进程退出的场景和方法、进程等待的方法以及exec函数族的介绍。我们的程序只能执行我们的代码如果我们创建的子进程,想执行其他程序的代码呢?当一个进程调用exec函数时,该进程的用户空间代码和数据将被新程序替换,从新程序的启动例程开始执行。这意味着进程不再执行原来的代码,而是执行新程序的代码。

2024-04-08 09:08:33 851

原创 【Linux】解密操作系统中的进程地址空间与页表管理

在操作系统中,每个进程都有自己的地址空间,用于存放代码、数据和堆栈等信息。同时,操作系统通过页表管理着地址空间与物理内存之间的映射关系。本文将深入探讨进程地址空间的布局和页表的作用。地址空间是指进程可用于寻址的内存范围,每个进程都有自己独立的地址空间。在32位系统中,通常的地址空间范围为0到4GB。struct XXX// 代码段的起始和结束地址// 已初始化的数据段的起始和结束地址// 未初始化的数据段(或称BSS段)的起始和结束地址。

2024-04-05 22:53:37 1197

原创 【Linux】探索环境变量与C语言命令行参数处理

在计算机编程和系统管理中,环境变量是一项至关重要的概念。它们不仅可以帮助程序获取系统配置信息和用户偏好设置,还可以在不同的进程之间传递数据。同时,C语言中处理命令行参数也是一个常见的任务,对于开发命令行程序或者系统管理工具都非常有用。本文将介绍环境变量的基本概念、特性,以及使用C语言处理命令行参数的两种方法。环境变量是系统级别的变量,用于存储系统配置信息和用户偏好设置。在C语言中,可以通过getenv函数获取环境变量的值。

2024-04-05 17:11:49 886

原创 【Linux】深入理解进程状态、优先级和调度:Linux 内核中的实现原理探析

在计算机操作系统中,进程状态、优先级和调度是非常重要的概念,它们直接影响着系统的性能、资源利用率和响应速度。理解这些概念不仅对于系统管理员和开发人员来说至关重要,对于任何对计算机系统有兴趣的人都是有益的。本文将深入探讨进程状态的各种表述方式、影响因素以及在 Linux 内核源代码中的具体实现,以及进程优先级的概念及其在 Linux 中的实现方式。我们还将讨论进程调度和切换的原理,以及 Linux 内核是如何通过各种机制来管理和调度进程,确保系统资源的合理利用和进程之间的公平竞争。

2024-03-31 15:34:41 831

原创 【Linux】初探进程:从硬件到软件的完美协同

计算机体系结构涵盖了硬件和软件两个方面,其中硬件层面包括了CPU、输入设备、输出设备、存储器以及设备之间的连接。这些硬件组件共同构成了计算机系统的基础,并为软件提供了执行的平台。而软件层面则由操作系统承担着管理和协调硬件资源的重要任务,保证计算机系统的稳定、高效和安全运行。在计算机体系结构中,硬件层面的各种组件如CPU、输入输出设备和存储器等通过设备之间的连接实现数据的流动和通信。操作系统作为软件层面的管理者,负责管理和协调这些硬件资源,提供稳定高效的运行环境。

2024-03-31 09:25:57 621

原创 【数据结构】深入理解红黑树:平衡性与高效性的完美结合

红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。RED,BLACKpublic:RBTreeNode(const pair& kv) // 构造新增节点, _kv(kv), _col(RED) // 默认为红色{}红黑树是一种自平衡的二叉搜索树,其节点上会附加一个颜色属性,可以是红色或黑色。

2024-03-22 08:48:49 1085

原创 【数据结构】深入理解AVL树:实现和应用

AVL树是由两位苏联数学家Adelson-Velsky和Landis于1962年发明的,它的特点是能够在插入和删除节点时自动调整树的结构,以保持树的平衡性。在AVL树中,任意节点的左右子树高度差不超过1,这就保证了整棵树的高度始终保持在对数级别,从而保证了插入、删除和查找等操作的高效性。本篇博客深入介绍了AVL树,包括其原理、实现和应用。通过C++代码示例展示了AVL树的基本结构和操作,以及探讨了在计算机科学领域的广泛应用。整体内容帮助读者更好地理解和应用AVL树这一自平衡的二叉搜索树。

2024-03-17 19:03:56 505

原创 【C51】Keil中的C51心形流水灯项目:硬件设计、软件实现与Proteus仿真

这篇博客将介绍如何在Keil中建立C51心形流水灯项目,包括硬件设计、软件实现和在Proteus中的电路仿真。通过详细的步骤指导和代码解释。

2024-03-15 15:22:03 633

原创 【C++】map与set容器的应用总结

选择使用哪种容器取决于具体的需求。如果需要有序性和快速查找,可以选择set和map;如果需要快速查找且不需要有序性,可以选择和;如果需要允许重复元素或键,可以选择multiset和multimap。

2024-03-15 14:05:26 571

原创 【C++】实现一个搜索二叉树(BSTree):从定义到操作全解析

首先,我们需要定义树的节点BSTreeNodepublic:K _key;// 节点存储的键V _value;// 节点存储的值// 左子节点// 右子节点通过本文的介绍,我们了解了二叉搜索树的基本概念、节点结构的定义以及如何实现插入、查找、删除和中序遍历等基本操作。实现一个搜索二叉树不仅能够加深对数据结构和算法的理解,也能够提升编程能力和问题解决能力。

2024-03-03 22:29:25 652

原创 【C++】重载、覆盖(重写)、隐藏(重定义): 理解多态性的关键概念

重载发生在同一个类中,当两个或多个函数拥有相同的名称但参数列表不同(参数类型、个数或顺序不同)时,这些函数就被认为是重载的。重载函数可以有不同的返回类型,只要参数列表不同即可。编译器根据函数调用时提供的参数类型和数量来选择合适的函数版本。覆盖发生在基类和派生类之间,当派生类定义一个与基类中具有相同名称、相同参数列表以及相同返回类型(或协变返回类型)的虚函数时,派生类中的函数被视为覆盖了基类中的函数。覆盖是实现运行时多态性的关键机制。

2024-03-02 14:32:54 475

原创 【C++】深入理解C++虚函数与纯虚函数

虚函数是在基类中使用关键字virtual声明的成员函数,它允许派生类对其进行重写(Override),实现运行时多态。当通过基类指针或引用调用虚函数时,实际调用的是对象类型对应的派生类中的函数,这个过程称为动态绑定(Dynamic Binding)或晚绑定(Late Binding)。虚函数重写指的是派生类中提供一个函数版本,该版本与基类中具有相同名称、相同返回类型和相同参数列表的虚函数相匹配。通过这种方式,派生类可以提供自己特定的实现,替换或扩展基类的行为。

2024-03-02 14:19:44 1444

原创 【C++】仿函数与函数指针:C++中的强大工具

函数指针是指向函数的指针。在C++中,函数也是一种特殊的数据类型,因此可以有指向函数的指针。函数指针使得程序能够根据需要调用不同的函数,增加了代码的灵活性和可重用性。仿函数,或称为函数对象,是一个行为类似函数的对象。在C++中,任何实现了operator()的类实例都可以作为仿函数。仿函数可以保存状态,这是它与普通函数和函数指针的一个重要区别。在C++中,使用std::sort函数进行排序时,既可以使用仿函数(Functor)也可以使用函数指针来自定义排序规则。

2024-03-01 22:10:27 1092

原创 【C++】继承与多态的常见问题解析

菱形继承:菱形继承是多继承的一种特殊情况。菱形继承的问题:从下面的对象成员模型构造,可以看出菱形继承有数据冗余和二义性的问题。在Assistant的对象中Person成员会有两份。public://姓名protected:int _num;// 学号protected:int _id;// 职工编号protected:// 主修课程// 这样会有二义性无法明确知道访问的是哪一个// 需要指明访问哪个父类成员可以解决二义性问题, 但是数据冗余问题无法解决。

2024-03-01 16:14:22 732

原创 【C++】深入探讨内存管理:malloc/free与new/delete的区别以及如何避免内存泄漏

内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.

2024-02-19 19:46:44 461

原创 【C++】STL中List的详细实现解析

在 C++ STL(标准模板库)中,List是一个带头双向链表,可以存储多个元素并且支持动态调整大小,适合频繁插入和删除操作;而Vector是一个动态数组,元素在内存中是连续存储的,适合需要快速随机访问的场景。List提供了添加、删除、查找等操作,而Vector除了这些基本操作外,还提供了按索引访问元素、在指定位置插入元素等功能,进而就可以很好的支持排序算法,二分查找,堆算法等,它的缺点是扩容要付出一定的代价,而且除了尾上的插入和删除外其他位置的插入和删除都不快(因为要挪动数据)。

2024-02-19 16:38:22 1186

原创 【C++】模板类vector的简单实现

通过以上的实现和测试,我们可以看到,我们的简化版vector类能够成功地实现动态数组的功能,并且具备了基本的操作和容器相关的函数。当然,这只是一个简化版的实现,与STL库中的vector相比还有很多功能和细节需要进一步完善。希望本文能够帮助你更好地理解和使用vector容器。如果您对这篇博客内容有任何疑问或建议,欢迎在下方留言进行讨论。

2024-01-22 11:37:51 433

原创 【C++】容器的迭代器失效问题

迭代器失效问题是 C++ 程序设计中一个常见的问题。在使用容器进行添加/删除元素的操作时,指向容器元素的指针、引用或迭代器可能会失效,这将导致严重的程序错误。为了避免迭代器失效,我们需要了解哪些操作可能会导致迭代器失效,以及如何管理迭代器。

2024-01-22 10:54:04 1120

原创 【windows】在host中设置禁止访问某个网站

1.找到:C:\Windows\System32\drivers\etc目录下的hosts文件。4.保存后添加复制回原来的文件夹,替换掉原理的文件。2.把这个文件复制到桌面上(提供更高权限)3.用记事本打开,在末尾添加上。

2023-12-30 08:18:55 1271 1

原创 【C++】题解:三道只出现一次的数字问题

在第一道题目中,我们使用异或运算来找出只出现一次的元素。由于异或运算的性质,相同的数字异或结果为0,任何数字与0异或仍然为它本身。因此,最终的结果就是那个只出现了一次的元素。在第二道题目中,我们使用位运算来找出只出现一次的元素。我们遍历32位二进制数的每一位,统计当前二进制位上1出现的次数。由于除了那个只出现一次的元素外,其他元素都出现了三次,所以1出现的次数必然是3的倍数或者0,不会是1或2。最终处理完32位二进制数的每一位后,就能得到只出现一次的元素。

2023-12-26 15:44:29 958

原创 【数据结构】顺序表与单链表的增删查改

在计算机编程领域,数据结构是非常重要的基础知识之一。顺序表和单链表作为常见的线性数据结构,在实际的软件开发中被广泛应用。本文将介绍了C语言中顺序表和单链表的实现方式,并对其进行了增删查改操作的详细讲解。通过阅读本文,读者将能够深入了解顺序表和单链表的底层实现原理,掌握它们的基本操作及相关的代码编写技巧。首先,我们需要定义一个结构体来表示顺序表,并声明一些相关的变量和函数。顺序表的结构体包含一个动态数组a,用于存储数据;size表示当前顺序表中元素的个数;capacity表示顺序表的容量,即当前数组a的大小。

2023-12-26 15:11:02 1137

原创 【Linux】在vim中批量注释与批量取消注释

在vim编辑器中,批量注释和取消注释的操作可以通过进入V-BLOCK模式、选择要注释或取消注释的内容、输入注释符号或选中已有的注释符号和按键完成。这些操作可以大大提高代码或文本的编写和修改效率,是vim编辑器中常用的操作之一。

2023-12-17 18:34:48 1127

原创 【C语言】cache和程序访问的局部性对程序性能的影响

通过对比不同存储区域(静态存储区、堆区和栈区)中数组的访问效率,分析了局部数据块大小、数组访问顺序等与执行时间之间的关系。实验结果表明,静态存储区按列访问最快,栈区访问速度最快,堆区访问相对较慢;同时,不同编译器、缓存机制等因素也会影响访问效率。因此,在选择存储区域时需要综合考虑执行效率、内存空间大小和使用需求等因素。

2023-12-17 18:05:22 1204 2

原创 【C++】C++中的String类详解及模拟实现示例

string类简介在C++编程中,字符串是一种非常常见的数据类型,用于存储文本信息。C++标准库提供了string类来处理字符串,它提供了许多方法和功能,使得字符串操作更加方便和高效。

2023-12-10 21:47:49 1243

原创 【C语言】位运算实现二进制数据处理及BCD码转换

位运算是计算机科学中一项重要的技术,它可以对二进制数据进行快速高效的处理。通过位运算,我们可以进行移位操作、按位与、按位或、按位取反等操作,从而实现各种数据操作和转换。

2023-12-10 12:18:45 1189

原创 【C语言】深入理解C语言中的数学运算和类型转换

通过本文的分析,我们了解了C语言中数学运算和类型转换的一些关键细节。从取负运算到浮点数的精度,再到除零的处理,每个概念都对编写可靠和高效的代码至关重要。希望这篇文章能帮助你在未来的编程实践中避免一些常见的陷阱。

2023-12-04 22:54:43 1057

c语言扫雷游戏(包含递归展开+标记功能) 源码可运行

扫雷是一款经典而富有挑战性的电脑游戏,它不仅考验玩家的智力和策略,还能够提升观察力和反应能力。本文将介绍如何使用**C语言**来编写一个简单的**扫雷游戏**,让我们一起来开发这个有趣的项目吧!

2023-07-28

c语言震惊!300行代码教你写出N子棋无敌AI人机(三子棋(井字棋)、四子棋、五子棋和六子棋等)

N子棋(完整代码+vs工程文件)

2023-07-26

数据结构顺序表 C语言代码实现以及realloc的使用

数据结构顺序表 C语言代码实现以及realloc的使用

2023-07-09

空空如也

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

TA关注的人

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