- 博客(107)
- 收藏
- 关注
原创 数据结构之BST、AVL、红黑树、哈夫曼树与B族树
二叉搜索树(BST):以简洁的二分法则奠定数据检索基石,却暗藏退化成链表的隐患;AVL树:通过高度平衡的旋转策略,首次将自平衡理念引入二叉树;红黑树:以巧妙的颜色标记和近似平衡,成为Java HashMap、C++ STL的幕后英雄;哈夫曼树:用贪心算法重构最优权重路径,构建无损压缩的核心骨架;B族树(B/B+/B*):突破内存限制,用多路平衡与磁盘页管理重塑数据库索引引擎。
2025-02-18 21:30:00
751
原创 数据结构之二叉树
二叉树(Binary Tree)是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树可以为空(没有节点),或者由一个根节点和两棵互不相交的子树(左子树和右子树)组成。
2025-02-12 11:31:00
1267
原创 数据结构之栈和队列
栈(Stack)是一种特殊的线性数据结构,遵循“后进先出”(LIFO, Last In First Out)的原则。队列(Queue)是一种特殊的线性数据结构,遵循“先进先出”(FIFO, First In First Out)的原则。
2025-01-07 00:00:00
938
原创 数据结构之串
在数据结构中,串(String) 是一种用于表示和操作字符序列的结构。它是最基本的线性表类型之一,广泛应用于文本处理、模式匹配、字符串操作等领域。
2025-01-03 00:00:00
1154
原创 数据结构之广义表
广义表(Generalized List)是一种重要的线性数据结构,它是线性表的推广。广义表不仅能存储单个元素,还能存储其他广义表,因而具有递归性质。
2024-12-12 00:15:00
1252
原创 数据结构之链表
链表是一种常见的线性数据结构,由一系列节点组成。每个节点包含两部分:数据域和指针域。数据域用于存储具体的数据,而指针域则用于指向下一个节点。
2024-12-12 00:00:00
1062
原创 Qt 事件处理
GUI 应用程序是由事件(event)驱动的,点击鼠标、按下某个按键、改变窗口大小、最小化 窗口等都会产生相应的事件,应用程序对这些事件进行相应的处理以实现程序的功能。本章介绍 Qt 事件系统的基本原理和处理流程,如何对特定事件进行处理,事件与信号的关系,事件拦截和 事件过滤的处理方法,以及拖放操作相关事件的处理等内容
2024-11-27 07:00:00
846
原创 Qt 文件操作
Qt 提供了一套强大的文件操作API,使得在各种应用场景下进行文件管理变得高效而简单。无论是在桌面应用程序、嵌入式系统还是移动应用中,浏览、读取、写入和管理文件及目录都是基本而重要的任务。
2024-09-24 00:00:00
1481
原创 QRegularExpression
QRegularExpression 是 Qt 5.10 引入的类,用于处理正则表达式。它提供了更现代和高效的正则表达式功能,支持 Perl 兼容的正则表达式(PCRE),与之前的 QRegExp 相比,性能和功能都得到增强。
2024-09-23 15:00:21
1676
原创 Qt日志输出及QsLog日志库
本文主要介绍Qt日志输出系统和QsLog日志库的使用,QsLog是一个基于Qt的QDebug类的易于使用的记录器。
2024-09-21 00:00:00
2247
原创 C++ 元编程
元编程的主要目的在于将各种计算从运行期提前至编译期进行,以实现程序运行时的性能提升。也正因如此,元编程是一种增加程序的编译时间,从而提升程序运行效率的编程技术。
2024-09-18 22:39:17
2108
5
原创 C++ 策略技术中的算法策略
策略模式是一种设计模式,允许在运行时选择算法的行为。在C++中,这可以通过模板和多态实现。策略类通常定义一个接口,各种不同的策略类实现这个接口,以提供具体的算法实现。
2024-09-15 00:00:00
1016
原创 C++ 萃取技术——将萃取类模板用作模板参数
在 C++ 编程中,理解和应用 Trait 类模板是提高代码质量和灵活性的关键技术之一。Trait 类模板提供了一种机制,通过这种机制可以在编译时查询或设置有关类型的特定属性。这些属性可能包括类型的数学特性、行为特性、或者与类型相关的支持操作。
2024-09-14 00:00:00
1781
原创 C++ 萃取技术——使用SFINAE特性的信息萃取
SFINAE(Substitution Failure Is Not An Error,替换失败并不是一个错误)是实现类型萃取中一个重要的技巧,它允许编译器在模板实例化过程中忽略那些会导致错误的替换,而不是产生编译错误。
2024-09-13 00:00:00
1095
原创 C++ 萃取技术——值萃取
在 C++ 编程中,萃取技术(Traits)是模板元编程的一个核心概念,用于在编译时提供类型相关的信息。其中,值萃取(Value Traits)是一种特定形式的萃取技术,它允许程序员为不同的数据类型定义特定的属性或值。
2024-09-12 00:00:13
1289
原创 C++ 萃取技术——固定萃取技术
萃取技术用于对模板中的各种模板参数进行管理。这种技术往往是通过书写一个类模板来体现,而这种类模板也称为“trait类模板”。从表现上来说,trait类模板像一个中间件一样,夹在不同的功能代码之间,使代码之间结合或调用(交互)变得更加灵活。
2024-09-11 19:27:01
1372
原创 C++ 标准库的典型内容
C++ 标准库提供了一系列强大且灵活的工具和组件,用于简化程序设计和提高开发效率。它包含多种功能模块,涵盖了内存管理、数据结构、算法、输入输出操作以及类型特征等多个方面
2024-09-10 00:01:10
931
原创 C++ 模板进阶知识——类模板中可变参的逐步展开
在C++编程中,模板是一种强大的工具,用于增加代码的复用性和灵活性。本文深入探讨了类模板中可变参数(Variadic Templates)的使用及其逐步展开的技术。本文将通过具体示例解释如何在类模板继承中利用可变参数来创建更通用和灵活的代码结构。
2024-09-10 00:00:50
773
原创 C++ 模板进阶知识——stdenable_if
在 C++ 的模板编程中,控制模板的实例化是关键且复杂的一部分。std::enable_if 是一个模板元编程工具,用于基于编译时条件(如类型特征)来启用或禁用模板代码。这种技术不仅增强了代码的灵活性,还提高了类型安全性,是现代 C++ 开发者必须掌握的技能之一。
2024-09-09 00:03:24
997
原创 C++ 模板进阶知识——完美转发
完美转发是C++中一种高级的技术,用于在函数模板中转发参数至另一个函数,同时保持所有参数的值类别(左值、右值)和其他属性(如const修饰符)不变。这一技术主要通过模板和std::forward实现,并在泛型编程中尤为重要,因为它允许函数模板在不丢失任何参数信息的前提下传递参数。
2024-09-08 00:02:44
2139
原创 C++ 模板进阶知识——类型推断
类型推断(推导)这件事情在模板编程中经常出现,很多时候编译器都会做类型推断。这方面的相关知识在现代C++语言开发中是经常用到的,算是一个比较大的知识点,有必要对类型推断的知识理论做一些储备。
2024-09-07 00:00:00
1370
原创 C++ 模板进阶知识——万能引用
万能引用是C++11中引入的一个高级特性,它允许函数模板参数根据传入的实参自动成为左值引用或右值引用。这一特性极大地增强了模板函数的灵活性和通用性,使得编写可同时处理左值和右值的通用代码成为可能。
2024-09-06 00:00:32
1769
原创 C++ 模板基础知识——模板的特殊继承关系
模板的继承其实与普通的继承区别不大,但在模板的继承关系中,有一些比较特殊的继承关系。在C++中,本文将重点介绍两种特殊的模板应用方式:奇异的递归模板模式(CRTP)和混入(Mixins)。这些技术在提供编译时多态和代码复用方面具有独特的优势。
2024-09-05 00:00:55
1191
原创 C++ 模板基础知识——多态在模板中的应用
在C++中,模板和多态是两种强大的编程技术,它们可以用来创建灵活和可重用的代码。虽然多态通常与继承和虚函数(动态多态)关联,但在模板中使用时,主要涉及到编译时多态(静态多态)。
2024-09-04 00:01:06
1355
原创 C++ 模板基础知识——可变参数模板
可变参数模板(Variadic Templates)是C++11引入的新特性,允许模板定义中包含任意数量的模板参数。这大大简化了以往实现类似功能所需的复杂代码。
2024-09-04 00:00:51
1640
原创 C++ 设计模式——设计模式总结
设计模式是软件设计中常见问题的典型解决方案。它们是经过反复验证的、可重用的代码设计经验,用于解决在特定情境下反复出现的软件设计问题。
2024-09-03 00:00:00
1106
原创 C++ 设计模式——解释器模式
解释器模式是一种特定于语言的模式,用于定义如何评估语言的句法或表达式。它适用于某些重复出现的问题,可以将一个需要解释执行的语言中的句子表示为一个抽象的语法树。这种模式通常被用于开发编程语言解释器或简单的脚本引擎。
2024-09-02 00:00:00
2895
原创 面向对象程序设计原则——里氏替换原则(LSP)
里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计中的一个重要原则,由芭芭拉·利斯科夫(Barbara Liskov)在1987年的会议演讲中首次提出。这个原则后来成为著名的SOLID原则之一,SOLID是五个面向对象设计原则的首字母缩写。其核心思想是:如果一个程序中使用了一个基类的对象,那么一定可以使用其子类的对象来替换它,而不会影响程序的正确性。简而言之,子类应该可以完全替代父类,而不会导致程序出错或行为异常。
2024-09-01 00:15:00
1279
原创 C++ 设计模式——访问者模式
访问者模式(Visitor Pattern)是一种行为设计模式,其目的是将数据结构与数据操作分离,使得在不修改已有程序代码的情况下,可以添加新的操作。这种模式通过定义一个访问者类,来改变一个元素类的执行算法。访问者模式使得你能够在不改变元素类的前提下,定义作用于这些元素的新操作。
2024-09-01 00:00:00
2069
原创 C++ 设计模式——职责链模式
职责链(Chain Of Responsibility)模式也叫责任链模式,是一种行为型模式,用于将一个请求传递给一个链中的若干对象,哪个对象适合处理这个请求就让哪个对象来处理。职责链看起来与传统数据结构中的“链表”非常类似。
2024-08-31 11:06:55
1676
原创 C++ 模板基础知识——类模板中的友元
在C++中,类模板中的友元关系可以是相当复杂的主题,因为它涉及到模板参数化和类型依赖的处理。友元在类模板中的使用可以帮助你在保持类封装的同时,允许特定的其他类或函数访问其私有或保护成员。
2024-08-31 00:01:13
2056
原创 C++ 设计模式——备忘录模式
备忘录(Memento)模式也称为快照(Snapshot)模式,是一种行为型模式,主要用于防止数据丢失。它通过对对象的状态进行备份,以便在未来需要时可以恢复这些数据。换句话说,该模式能够将某个时间点的对象内部状态保存下来,并在必要时根据保存的内容将该对象恢复到当时的状态。备忘录模式的结构比较简单,使用频率相对较低,但在特定场景下非常有用。
2024-08-30 13:55:04
1824
原创 C++ 设计模式——中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,它允许对象间的通信被封装到一个中介者对象中。该模式的主要目的是减少多个对象和类之间的通信复杂性,通过创建一个集中的控制点来管理相互间的依赖关系。这种模式特别适用于大型系统中,可以帮助减少组件之间的直接交互,从而使其更易于维护和扩展。
2024-08-30 00:00:00
2729
2
GitLab 入门教程:环境搭建与使用
2024-08-14
Git 从入门到精通:版本控制实战指南
2024-08-14
mingw 编译的 osg3.6.5
2024-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人