- 博客(97)
- 收藏
- 关注
原创 C++26 编译时反射简介
C++26引入了编译时反射功能, 允许程序在编译时观察和操作其自身结构. 反射功能通过std::meta::info类型, 反射操作符^和Splicer [: :]实现, 支持类型, 命名空间, 常量表达式等的操作. 这一功能将大大减少样板代码, 提升开发效率, 尤其在序列化, 反序列化等场景中表现突出. 文章详细介绍了反射的基本概念, 当前提案, 使用场景及示例代码, 帮助开发者更好地理解和应用这一新特性.
2025-03-30 23:18:32
1039
原创 CMake 函数和宏
本文详细探讨了CMake中函数与宏的核心概念, 包括定义语法, 参数解析, 返回值设置以及常见错误分析. 通过具体示例, 讲解了cmake_parse_arguments的使用方法, 以及如何利用CMake 3.25新增的return语句优化代码结构. 此外, 对比了函数与宏的区别, 帮助开发者理解二者在作用域和性能上的差异.
2025-03-20 23:56:08
252
原创 clang-tidy用std::format替换printf函数
本文详细介绍了如何通过 Clang-Tidy 工具将遗留 C/C++ 代码中的 printf 函数替换为更安全, 更现代的 std::format 或 fmt::format. 我们提供了安装指南, 具体配置步骤以及实际代码转换示例, 帮助开发者快速上手并优化代码质量. 此外, 还探讨了 printf 的缺陷及替代方案的优势, 助力团队实现代码现代化.
2025-03-20 16:08:38
1068
原创 C++基础: Rule of five/zero/three
本文详细解析了C++中的Rule of Five/Zero/Three原则, 通过实现一个简单字符串类的实例, 逐步展示如何正确定义拷贝, 移动构造函数和赋值操作符. 同时, 文章强调了Rule of Zero的重要性, 提倡尽量使用标准库工具类来简化资源管理, 减少手动定义默认操作的需求. 这些原则不仅有助于避免常见的内存管理问题, 还能显著提升代码的可维护性和性能.
2025-03-18 22:46:03
704
原创 CMake 开发库(Library)的最佳实践
本文详细介绍了使用Modern CMake开发库的最佳实践, 涵盖以Target为核心的构建方式, 正确打包库的方法, 依赖管理技巧以及保持CMakeLists.txt整洁的策略. 通过实例代码展示如何优化CMake脚本, 帮助开发者提高项目构建效率, 减少维护成本. 文章还提供了参考示例和视频教程, 为C++开发者提供全面指导.
2025-03-17 20:37:38
1325
原创 C++ 返回值优化(Return Value Optimization)
本文深入探讨C++中的返回值优化(RVO), 包括命名返回值优化(NRVO)和无名返回值优化(URVO), 通过实例代码展示RVO如何提高程序性能, 避免不必要的临时对象创建. 同时, 讨论RVO的发展历程, 失效情况及与std::move的区别, 帮助开发者优化代码.
2025-03-16 22:32:21
804
原创 理解C++值类别(lvalue, rvalue, prvalue, xvalue)
本文详细解析C++值类别的演进与应用, 涵盖左值, 右值, 纯右值及将亡值的概念及其在现代C++中的作用. 通过学习右值引用与移动语义, 开发者可以优化资源管理, 减少不必要的拷贝操作, 从而提高程序性能. 适合希望深入了解C++底层机制的开发者阅读.
2025-03-15 19:54:28
743
原创 C++20 新特性总结
本文全面总结了C++20的重要更新, 涵盖三路比较运算符, 模板参数占位符, 概念与要求, Ranges库, std::span, 类型模板参数扩展, 编译时计算, Lambda扩展, 格式化输出, 日期与时区支持, 协程, 多线程同步原语, 同步输出流以及模块系统. 通过实际代码示例和关键点解析, 帮助读者快速掌握这些新特性, 提升开发效率.
2025-03-11 14:39:38
1973
原创 图论基础算法: 二分图的判定(C++)
本文详细介绍了二分图的基本概念与核心性质, 包括顶点集分割与无奇数环特性. 重点讲解了使用染色法(DFS和BFS)判定二分图的具体步骤与代码实现, 并结合LeetCode经典例题进行解析. 文章旨在帮助读者深入理解二分图的理论基础与实际应用, 提升图论算法设计能力.
2025-03-04 23:18:12
715
原创 C++核心指导原则: C风格编程及其他杂项
本文详细总结了C++核心指导原则中的其他杂项规则, 包括C风格编程的最佳实践, 结构性设计建议以及常见的编码误区. 内容涵盖了如何优先选择C++特性, 分离稳定与不稳定代码, 避免循环依赖等方面, 并提供了具体的建议和示例. 通过遵循这些指导原则, 开发者可以编写出更加安全, 高效且易于维护的C++程序, 提升代码质量.
2025-03-03 21:04:34
699
原创 C++核心指导原则: 标准库
本文详细总结了C++核心指导原则中的标准库规则, 旨在帮助开发者更好地理解和应用这些规则. 内容涵盖了容器选择, 字符串处理, I/O操作等方面的最佳实践, 强调了使用标准库的重要性, 并提供了具体的建议和示例, 以确保代码的安全性, 效率和可维护性. 通过遵循这些指导原则, 开发者可以编写出更加健壮和高效的C++程序.
2025-03-03 20:41:27
1035
原创 网络流算法: Dinic算法
本文详细介绍了Dinic算法, 这是一种基于Ford-Fulkerson方法的高效网络流算法, 用于解决最大流问题. Dinic算法通过引入层次图的概念, 利用广度优先搜索(BFS)和深度优先搜索(DFS)来加速增广路径的查找. 文章详细阐述了层次图的构建步骤, 增广路径的寻找过程以及残量图的更新方法, 并通过C++代码实现展示了算法的具体应用.
2025-03-01 17:34:53
1451
原创 C++核心指导原则: 命名和布局建议
本文深入探讨了C++核心指导原则中的命名和布局建议, 旨在帮助开发者提升代码的可读性和维护性. 文章强调了保持一致的命名风格和代码布局的重要性, 避免在注释中重复代码内容, 以及在命名中避免编码类型信息. 通过遵循这些建议, 开发者可以减少认知负荷, 提高团队协作效率, 使代码更加专业和易于维护.
2025-03-01 13:37:32
898
原创 网络流算法: Edmonds-Karp算法
本文详细介绍了网络流算法, 重点讲解了Ford-Fulkerson方法和Edmonds-Karp算法. 通过构建残量图和寻找增广路径, 逐步增加网络中的流量, 直至达到最大流. 文章还提供了算法的代码实现和演示, 帮助读者深入理解如何在流网络中最大化流量. 适合对算法和数据结构感兴趣的读者, 特别是希望掌握网络流问题的学习者.
2025-02-28 23:47:21
1009
原创 C++核心指导原则: 源文件
本文详细介绍了C++核心指导原则中关于源文件的最佳实践, 包括头文件管理, 命名空间使用, 依赖关系优化等内容. 通过遵循这些规则, 开发者可以避免常见的编译错误, 提高代码的可读性和可维护性. 文章还探讨了如何正确使用#include保护, 避免循环依赖以及合理组织命名空间等关键技巧. 无论你是C++初学者还是经验丰富的开发者, 本文都将为你提供实用的指导, 帮助你编写更加高效的C++代码
2025-02-28 17:38:23
765
原创 Wireshark Lua 插件教程
本文深入探讨了如何在Wireshark中使用Lua脚本进行自定义协议的解析和数据导出. 通过详细的代码示例和步骤说明, 读者可以学习如何编写Dissector来解析Wireshark不支持的协议, 以及如何利用Dumper导出特定协议字段. 文章还涵盖了TCP包重组, 调试技巧等高级主题, 帮助开发者高效处理网络数据包分析任务, 提升工作效率.
2025-02-27 20:44:41
1632
原创 多源最短路径求解: Floyd-Warshall算法和Johnson 算法
本文介绍图论中多源最短路径算法. 主要讲述Floyd-Warshall算法.
2025-02-25 19:59:42
979
原创 欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)
本文介绍图论中的欧拉回路和汉密尔顿回路. 并介绍求解欧拉回路的两种算法.
2025-02-24 21:41:48
1126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人