- 博客(113)
- 收藏
- 关注
原创 算法之分支定界
分支定界(Branch and Bound)是一种用于解决组合优化问题的算法设计范式。其核心思想是通过系统枚举所有可能解,并利用上下界策略剪枝,丢弃不可能产生最优解的子问题,从而有效减少搜索空间。
2025-04-24 20:30:00
914
原创 算法之回溯法
回溯法是一种通过探索所有可能的候选解来找出所有解的算法。它采用试错的思想,尝试分步解决一个问题,在分步解决问题的过程中,当发现现有的分步答案不能得到有效的正确的解答时,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。
2025-04-22 21:00:00
1038
原创 算法之动态规划
动态规划(Dynamic Programming, DP)是一种解决复杂问题的算法设计技术,适用于具有“重叠子问题”和“最优子结构”性质的问题。动态规划将问题分解成更小的子问题,通过解决这些子问题来解决原始问题。这种方法的关键在于避免重复计算。一旦解决了一个子问题,它的解就被存储起来,以便后续需要时直接使用,从而避免了重复计算。这种记忆化的技术称为“缓存”。
2025-04-21 21:00:00
1700
原创 算法之分而治之
"分而治之"(Divide and Conquer)是一种算法设计策略,它将一个问题分解成更小的、相互独立的子问题,然后递归地解决这些子问题,最后将它们的解合并起来,得到原始问题的解。
2025-04-21 20:00:00
901
原创 算法之贪心算法
贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最优的选择,从而希望以这种方式能够达到全局最优解的一种算法思想。贪心算法并不总是能得到全局最优解,但在一些问题中,它能产生出足够好的解,而且相对简单高效。
2025-04-17 20:00:00
2095
原创 数据结构之BST、AVL、红黑树、哈夫曼树与B族树
二叉搜索树(BST):以简洁的二分法则奠定数据检索基石,却暗藏退化成链表的隐患;AVL树:通过高度平衡的旋转策略,首次将自平衡理念引入二叉树;红黑树:以巧妙的颜色标记和近似平衡,成为Java HashMap、C++ STL的幕后英雄;哈夫曼树:用贪心算法重构最优权重路径,构建无损压缩的核心骨架;B族树(B/B+/B*):突破内存限制,用多路平衡与磁盘页管理重塑数据库索引引擎。
2025-02-18 21:30:00
781
原创 数据结构之二叉树
二叉树(Binary Tree)是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树可以为空(没有节点),或者由一个根节点和两棵互不相交的子树(左子树和右子树)组成。
2025-02-12 11:31:00
1356
原创 数据结构之栈和队列
栈(Stack)是一种特殊的线性数据结构,遵循“后进先出”(LIFO, Last In First Out)的原则。队列(Queue)是一种特殊的线性数据结构,遵循“先进先出”(FIFO, First In First Out)的原则。
2025-01-07 00:00:00
966
原创 数据结构之串
在数据结构中,串(String) 是一种用于表示和操作字符序列的结构。它是最基本的线性表类型之一,广泛应用于文本处理、模式匹配、字符串操作等领域。
2025-01-03 00:00:00
1214
原创 数据结构之广义表
广义表(Generalized List)是一种重要的线性数据结构,它是线性表的推广。广义表不仅能存储单个元素,还能存储其他广义表,因而具有递归性质。
2024-12-12 00:15:00
1290
原创 数据结构之链表
链表是一种常见的线性数据结构,由一系列节点组成。每个节点包含两部分:数据域和指针域。数据域用于存储具体的数据,而指针域则用于指向下一个节点。
2024-12-12 00:00:00
1082
原创 Qt 事件处理
GUI 应用程序是由事件(event)驱动的,点击鼠标、按下某个按键、改变窗口大小、最小化 窗口等都会产生相应的事件,应用程序对这些事件进行相应的处理以实现程序的功能。本章介绍 Qt 事件系统的基本原理和处理流程,如何对特定事件进行处理,事件与信号的关系,事件拦截和 事件过滤的处理方法,以及拖放操作相关事件的处理等内容
2024-11-27 07:00:00
892
原创 Qt 文件操作
Qt 提供了一套强大的文件操作API,使得在各种应用场景下进行文件管理变得高效而简单。无论是在桌面应用程序、嵌入式系统还是移动应用中,浏览、读取、写入和管理文件及目录都是基本而重要的任务。
2024-09-24 00:00:00
1536
原创 QRegularExpression
QRegularExpression 是 Qt 5.10 引入的类,用于处理正则表达式。它提供了更现代和高效的正则表达式功能,支持 Perl 兼容的正则表达式(PCRE),与之前的 QRegExp 相比,性能和功能都得到增强。
2024-09-23 15:00:21
1734
原创 Qt日志输出及QsLog日志库
本文主要介绍Qt日志输出系统和QsLog日志库的使用,QsLog是一个基于Qt的QDebug类的易于使用的记录器。
2024-09-21 00:00:00
2408
原创 C++ 元编程
元编程的主要目的在于将各种计算从运行期提前至编译期进行,以实现程序运行时的性能提升。也正因如此,元编程是一种增加程序的编译时间,从而提升程序运行效率的编程技术。
2024-09-18 22:39:17
2188
5
原创 C++ 策略技术中的算法策略
策略模式是一种设计模式,允许在运行时选择算法的行为。在C++中,这可以通过模板和多态实现。策略类通常定义一个接口,各种不同的策略类实现这个接口,以提供具体的算法实现。
2024-09-15 00:00:00
1032
原创 C++ 萃取技术——将萃取类模板用作模板参数
在 C++ 编程中,理解和应用 Trait 类模板是提高代码质量和灵活性的关键技术之一。Trait 类模板提供了一种机制,通过这种机制可以在编译时查询或设置有关类型的特定属性。这些属性可能包括类型的数学特性、行为特性、或者与类型相关的支持操作。
2024-09-14 00:00:00
1797
原创 C++ 萃取技术——使用SFINAE特性的信息萃取
SFINAE(Substitution Failure Is Not An Error,替换失败并不是一个错误)是实现类型萃取中一个重要的技巧,它允许编译器在模板实例化过程中忽略那些会导致错误的替换,而不是产生编译错误。
2024-09-13 00:00:00
1140
原创 C++ 萃取技术——值萃取
在 C++ 编程中,萃取技术(Traits)是模板元编程的一个核心概念,用于在编译时提供类型相关的信息。其中,值萃取(Value Traits)是一种特定形式的萃取技术,它允许程序员为不同的数据类型定义特定的属性或值。
2024-09-12 00:00:13
1310
原创 C++ 萃取技术——固定萃取技术
萃取技术用于对模板中的各种模板参数进行管理。这种技术往往是通过书写一个类模板来体现,而这种类模板也称为“trait类模板”。从表现上来说,trait类模板像一个中间件一样,夹在不同的功能代码之间,使代码之间结合或调用(交互)变得更加灵活。
2024-09-11 19:27:01
1410
原创 C++ 标准库的典型内容
C++ 标准库提供了一系列强大且灵活的工具和组件,用于简化程序设计和提高开发效率。它包含多种功能模块,涵盖了内存管理、数据结构、算法、输入输出操作以及类型特征等多个方面
2024-09-10 00:01:10
965
原创 C++ 模板进阶知识——类模板中可变参的逐步展开
在C++编程中,模板是一种强大的工具,用于增加代码的复用性和灵活性。本文深入探讨了类模板中可变参数(Variadic Templates)的使用及其逐步展开的技术。本文将通过具体示例解释如何在类模板继承中利用可变参数来创建更通用和灵活的代码结构。
2024-09-10 00:00:50
783
原创 C++ 模板进阶知识——stdenable_if
在 C++ 的模板编程中,控制模板的实例化是关键且复杂的一部分。std::enable_if 是一个模板元编程工具,用于基于编译时条件(如类型特征)来启用或禁用模板代码。这种技术不仅增强了代码的灵活性,还提高了类型安全性,是现代 C++ 开发者必须掌握的技能之一。
2024-09-09 00:03:24
1037
原创 C++ 模板进阶知识——完美转发
完美转发是C++中一种高级的技术,用于在函数模板中转发参数至另一个函数,同时保持所有参数的值类别(左值、右值)和其他属性(如const修饰符)不变。这一技术主要通过模板和std::forward实现,并在泛型编程中尤为重要,因为它允许函数模板在不丢失任何参数信息的前提下传递参数。
2024-09-08 00:02:44
2342
原创 C++ 模板进阶知识——类型推断
类型推断(推导)这件事情在模板编程中经常出现,很多时候编译器都会做类型推断。这方面的相关知识在现代C++语言开发中是经常用到的,算是一个比较大的知识点,有必要对类型推断的知识理论做一些储备。
2024-09-07 00:00:00
1427
原创 C++ 模板进阶知识——万能引用
万能引用是C++11中引入的一个高级特性,它允许函数模板参数根据传入的实参自动成为左值引用或右值引用。这一特性极大地增强了模板函数的灵活性和通用性,使得编写可同时处理左值和右值的通用代码成为可能。
2024-09-06 00:00:32
1816
原创 C++ 模板基础知识——模板的特殊继承关系
模板的继承其实与普通的继承区别不大,但在模板的继承关系中,有一些比较特殊的继承关系。在C++中,本文将重点介绍两种特殊的模板应用方式:奇异的递归模板模式(CRTP)和混入(Mixins)。这些技术在提供编译时多态和代码复用方面具有独特的优势。
2024-09-05 00:00:55
1226
原创 C++ 模板基础知识——多态在模板中的应用
在C++中,模板和多态是两种强大的编程技术,它们可以用来创建灵活和可重用的代码。虽然多态通常与继承和虚函数(动态多态)关联,但在模板中使用时,主要涉及到编译时多态(静态多态)。
2024-09-04 00:01:06
1395
原创 C++ 模板基础知识——可变参数模板
可变参数模板(Variadic Templates)是C++11引入的新特性,允许模板定义中包含任意数量的模板参数。这大大简化了以往实现类似功能所需的复杂代码。
2024-09-04 00:00:51
1688
原创 C++ 设计模式——设计模式总结
设计模式是软件设计中常见问题的典型解决方案。它们是经过反复验证的、可重用的代码设计经验,用于解决在特定情境下反复出现的软件设计问题。
2024-09-03 00:00:00
1126
原创 C++ 设计模式——解释器模式
解释器模式是一种特定于语言的模式,用于定义如何评估语言的句法或表达式。它适用于某些重复出现的问题,可以将一个需要解释执行的语言中的句子表示为一个抽象的语法树。这种模式通常被用于开发编程语言解释器或简单的脚本引擎。
2024-09-02 00:00:00
2945
GitLab 入门教程:环境搭建与使用
2024-08-14
Git 从入门到精通:版本控制实战指南
2024-08-14
mingw 编译的 osg3.6.5
2024-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人