自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt中的QProcess类

QProcess 是 Qt 框架中用于启动和控制外部进程的类,它属于 QtCore 模块。这个类提供了执行外部程序并与它们交互的功能。

2025-07-07 23:27:42 405

原创 设计模式---观察者模式(发布-订阅模式)

发布-订阅模式是一种消息传递模式,用于实现对象间的一对多依赖关系。这种模式实现了发布者和订阅者的解耦,提高了系统的灵活性和可扩展性。

2025-07-06 15:48:38 287

原创 数据结构---B+树

B+树是一种平衡的多路查找树,是数据库和文件系统中常用的索引结构。

2025-07-06 12:05:24 1059

原创 快速排序算法

快速排序是一种高效的排序算法,其核心思想是通过分治法将数组分成两部分,一部分小于某个基准值,另一部分大于基准值,然后递归地对这两部分进行排序。快速排序是一种非常高效的排序算法,尤其在处理大规模数据时表现良好。

2025-07-06 11:37:32 255

原创 C++ 11中lock_guard和unique_lock的区别

如果你只需要在某个作用域内简单地锁定和解锁互斥锁,且不需要中途解锁,那么是更好的选择。如果你需要更灵活地控制锁的锁定和解锁,或者需要与条件变量配合使用,那么是更合适的选择。

2025-07-05 23:49:15 304

原创 C++11 异步编程(3)--- packaged_task

是 C++11 标准库中引入的一个非常实用的工具,主要用于将可调用对象(如函数、lambda 表达式、函数对象等)封装起来,以便在异步编程中方便地使用。

2025-06-29 23:23:52 356

原创 C++11 异步编程(2)--- promise

std::promise是C++11引入的一个同步原语,它是异步编程工具集的一部分,与std::future配合使用,用于在线程之间传递值和同步操作。std::promise允许一个线程存储一个值或异常,该值或异常随后可以通过与之关联的std::future对象被另一个线程获取。这是一种线程间通信的机制。

2025-06-22 11:33:52 867

原创 数据结构---B树

每个节点最多有 *M* 个子节点(其中M是B树的阶数)。每个节点至少有 ⌈*M*/2⌉ 个子节点(除了根节点,根节点至少有2个子节点,除非它是叶子节点)。所有叶子节点都在同一层,即B树是平衡的。每个节点最多有 *M*−1 个键值。每个节点的键值按升序排列。根节点至少有2个子节点(除非它是叶子节点)。

2025-06-15 16:48:25 1002

原创 单例模式的好处

唯一性:某些资源在整个应用程序中只需要一个实例,例如日志记录器、配置管理器、数据库连接池等。单例模式可以确保这些资源的唯一性,避免重复创建和管理。全局访问:单例模式提供了一个全局访问点,方便在程序的任何地方访问该实例,而无需通过复杂的依赖注入或传递对象引用。

2025-06-15 16:13:55 220

原创 把Cmakelist.txt转化为Qt Pro文件的方法

问题:在拿到别人的Qt项目时,打开项目其中只有CMakeList.txt文件,而不是熟悉的.pro文件,于是想着如何根据CMakeList.txt生成.pro文件。会生成一个*.pro文件,可以直接使用QT打开,一般情况下比使用QT直接打开cmakelist载入的信息全面。有些工程载入pro文件反而丧失了信息,载入camkelist却能保证程序配置结构,暂时还没有找到原因所在。cd到cmakelist文件夹下,建议两种方法都尝试一下。

2025-06-15 15:41:25 266

原创 使用MFC中的CEvent实现两个线程之间的交替打印

程序说明:上述定义了两个CEvent 变量g_EventA和g_EventB,g_EventA初始化为有信号,g_EventB初始化为没有信号,这样就可以实现A先打印,然后在FuncB函数中调用WaitForSingleObject函数等待g_EventB有信号,只有在FuncA函数执行设置g_EventB有信号后,FuncB才打印。问题要求如下:请写出一个多线程程序,要求打印效果如下:A:0,B:0、A:1,B:1…A:99,B:99?

2025-06-09 23:24:42 349

原创 数据结构---红黑树

红黑树是一种自平衡的二叉查找树,它在每一个节点上增加另一个存储位来表示节点的颜色,可以是红色或者黑色。通过这些颜色的约束,红黑树能够保证从根到叶子节点的最长路径不会超过最短路径的两倍,从而保持大致的平衡。

2025-06-08 12:25:55 480

原创 归并排序算法

归并排序(Merge Sort)是一种经典的分治算法,其核心思想是将一个复杂问题分解为多个相对简单的子问题,分别解决这些子问题,然后再将子问题的解合并为原问题的解。

2025-06-07 11:46:41 625

原创 C++中新式类型转换static_cast、const_cast、dynamic_cast、reinterpret_cast

用于有明确类型关系的转换,安全且高效。:用于继承体系中的向下转型,依赖RTTI,运行时检查。const_cast:用于修改变量的const或volatile属性,需谨慎使用。:用于低级别的类型转换,需谨慎使用,可能导致未定义行为。在实际编程中,应尽量避免使用和const_cast,优先使用和,以确保类型安全和代码的可读性。

2025-06-01 11:58:07 453

原创 Qt SQL模块基础

官方帮助文档中的Qt支持的数据库驱动如下图:Qt SQL 模块中提供了一些常见的数据库驱动,包括网络型数据库,如Qracle、MS SQL Server、MySQL等,也包括简单的单机型数据库。

2025-05-31 16:04:05 490

原创 Qt中的智能指针

Qt中提供了多种智能指针,用于管理自动分配的内存,避免内存泄漏和悬挂指针的问题。

2025-05-27 23:07:04 1161

原创 C++项目中调用C#DLL的的方式

在C++中调用C#编写的DLL,通常需要借助COM(Component Object Model)技术或者通过C++/CLI(C++托管扩展)来实现。

2025-05-26 23:17:31 801

原创 C++11异步编程 --- async

std::asyncstd::async是一个函数模板,用于启动一个异步任务。它返回一个对象,该对象可以用来获取异步任务的结果。std::async的执行方式可以通过策略来控制。future是一个类模板,用于存储异步执行结果,它提供了一种机制,允许用户在某个异步操作完成时获取其结果。对象可以与线程、异步任务或其他并发操作相关联。

2025-05-13 23:21:19 588

原创 Qt中在子线程中刷新UI的方法

在Qt中UI界面并不是线程安全的,意味着在子线程中不能随意操作UI界面组件(比如按钮、标签)等,如果强行操作这些组件有可能会导致程序崩溃。那么在Qt中如何在子线程中刷新UI控件呢?

2025-05-10 23:26:21 1029

原创 C++11中的移动语义

特性移动语义传统拷贝语义资源处理所有权转移(无深拷贝)深拷贝性能O(1)(高效)O(n)(可能低效)适用场景临时对象、大型资源类、容器操作不可复制资源的小型对象关键字std::move&&noexceptconst&、拷贝构造函数最佳实践为资源管理类实现移动语义。使用std::move显式转移资源。将移动操作标记为noexcept。避免在移动后访问被移动的对象。参考文章:1.透彻理解C++11 移动语义:右值、右值引用、std::move、std::forward2.

2025-04-12 16:40:34 979

原创 C++11中的左值、右值、左值引用、右值引用

类型可以绑定到示例左值(Lvalue)左值int a = 10;右值(Rvalue)右值左值引用(Lvalue Reference)左值右值引用(Rvalue Reference)右值。

2025-04-12 11:54:25 528

原创 Qt中自定义插件和库(1)

在Qt中创建一个新的类,继承自QWidget或其他Qt控件类。例如,创建一个自定义的电池UI控件TBattery,继承自QWidget。在该类的头文件中,使用Q_OBJECT宏声明该类为一个Qt对象。在类的实现文件中,重写paintEvent等事件处理函数,实现自定义的绘制逻辑。

2025-04-08 21:57:26 897

原创 使用QAction编辑器添加QAction到ui里

通过 Action Editor,可以完全可视化地管理。,无需手动编写创建和布局代码,大幅提升开发效率!:Qt 会自动连接命名规范的槽函数(无需手动。,无需手动编写代码。文件后,Qt 会自动生成。

2025-04-05 16:59:52 710

原创 在QWidget中如何添加QAction

可以通过以下步骤实现。),但也可以直接关联到。

2025-04-05 16:48:35 307

原创 Qt中左侧项目菜单中构建设置功能中的构建步骤是怎么回事

构建步骤(Build Steps)**是控制项目如何编译、链接和生成最终产物的核心配置区域。它允许你自定义编译过程中的各个阶段(如。在 Qt Creator 中,**构建设置(Build Settings)通过合理配置构建步骤,可以显著提升开发效率并避免常见的编译问题。等命令的具体行为)。

2025-04-05 15:29:35 479

原创 在Qt中直接在构建目录下直接运行.exe文件报错问题分析

在学习Qt的过程中遇到过一个问题,直接在Qt构建目录下运行生成的.exe文件时会报错。这和MFC有一定的差别,如果MFC是可以直接运行的。| 如果使用 MSVC 编译 |已放置在正确的位置。否则会出现程序无法启动或报错(如。文件(Windows 平台)时,需要确保以下。| Windows 平台插件 |Qt 提供了 windeployqt。在 Qt 中直接运行构建目录下的。(Windows 平台插件)2.其他可能需要的插件(如。自动部署,避免遗漏依赖项!它会自动复制所有需要的。

2025-04-02 20:21:08 1177

原创 vecto容器的emplace_back函数对比push_back函数

emplace 相比 push_back 的主要优势在于减少了不必要的拷贝或移动操作,从而提高了性能和效率。此外,emplace 的灵活性更高,适用于更广泛的场景,尤其是在处理复杂对象和资源管理类时。然而,push_back 也有其优势,例如代码可读性更高(因为它直接传递对象),在某些简单场景下也完全适用。在实际使用中,可以根据具体需求选择合适的方法。

2025-03-30 15:07:05 445

原创 MFC中CMap类的用法和原理

CMap 是一个模板类,需要指定键类型、键的参数类型、值类型和值的参数类型。例如:下面展示一些内联代码片。// 键为 int,值为 CString// 哈希表大小为 101。

2025-03-30 14:11:38 605

原创 C++11中智能指针的使用(shared_ptr、unique_ptr、weak_ptr)

如果需要对对象进行特殊处理(如释放资源或调用特定函数),可以为。

2025-03-24 23:38:52 917

原创 如何在Win32编程中实现多线程同步?

在Win32编程中,多线程同步可以通过多种机制实现,包括临界区、互斥量、信号量和事件。临界区:适用于同一进程内的线程同步。互斥量:适用于跨进程的线程同步。信号量:适用于控制对多个资源的访问。事件:适用于线程间的通信和同步。通过合理选择和使用这些同步机制,可以确保多线程程序的正确性和稳定性。句柄。

2025-03-22 11:46:59 614

原创 VC++中终止线程的方式

在MFC中,可以使用事件对象(如CEvent)来通知线程终止。线程可以在运行过程中定期检查事件是否被触发,如果是,则安全地退出。

2025-03-22 10:09:41 279

原创 unique_ptr中reset()函数的用法

如果。

2025-03-15 12:15:08 614

原创 钻石继承(Diamond Inheritance)问题是什么?如何解决?

钻石继承问题主要出现在多重继承场景中,通过虚继承、显式指定访问路径或避免多重继承等方法可以有效解决。

2025-03-15 10:24:07 417

原创 C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?

虚析构函数的作用是确保在通过基类指针或引用删除派生类对象时,能够正确调用派生类的析构函数,从而避免资源泄漏和未定义行为。如果基类中定义了虚函数,那么基类的析构函数也应该声明为虚的,以支持多态的正确析构。

2025-03-15 00:05:33 553

原创 C++中通过虚函数实现多态的原理

虚函数是在基类中使用。

2025-03-14 23:47:45 377

原创 C++ 中的RAII(资源获取及初始化)

RAII是C++中一种非常重要的资源管理机制,通过将资源的生命周期与对象的生命周期绑定,能够有效避免资源管理中的错误。它在现代C++编程中被广泛应用,尤其是在智能指针、文件操作和线程同步等领域。合理使用RAII可以提高代码的安全性和可维护性。

2025-03-10 23:48:50 455

原创 Qt 元对象系统

Qt元对象系统(Meta-Object System)是Qt框架的核心特性之一,它为C++语言提供了运行时反射、信号与槽机制、动态属性系统等功能。

2025-03-09 21:06:46 984

原创 C++11使用mutex和condition_variable实现线程同步

C++中A、B、C三个线程模拟购买100张车票,A输出99,B输出98,C输出97,然后又循环A输出96,B95,C94,直到0,使用线程同步,如何实现?这是一种按顺序执行线程的问题,应该实现?

2025-03-09 19:47:10 302

原创 C++11中的Condition_variable

在C++11中,条件变量()是线程同步机制之一,用于在多线程环境中实现线程间的通信和协调。它允许一个或多个线程在某个条件尚未满足时等待,直到其他线程通知条件已经满足。条件变量通常与互斥锁(std::mutex)一起使用,以确保线程安全。

2025-03-09 19:45:41 362

原创 C++11中atomic

是C++中实现线程安全和原子操作的重要工具。它不仅能够保证操作的原子性,还可以通过内存序控制解决复杂的多线程同步问题。在设计多线程程序时,合理使用可以提高代码的效率和可维护性。

2025-03-05 23:49:08 444

空空如也

空空如也

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

TA关注的人

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