logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Lambda表达式:从“匿名函数”到“异步保命符”,C++代码优雅与安全兼得

本文详细介绍了C++中Lambda表达式的发展历程和使用方法。从传统的函数指针和仿函数开始,分析了它们的局限性:函数指针无法捕获上下文变量,仿函数代码冗长。Lambda表达式则整合了两者的优点,提供简洁语法、变量捕获能力和高性能。文章重点讲解了Lambda的基本语法、捕获方式(值捕获、引用捕获、this捕获)以及mutable关键字的使用。此外,还探讨了Lambda与标准库算法、智能指针的结合应用

文章图片
#c++#开发语言
重识 std::tuple:一个被低估的编译期异构容器

本文系统性地探讨了C++中std::tuple的实现原理和高级应用。首先分析了tuple的设计动机,它解决了临时性异构数据聚合的问题,避免了为一次性使用而定义结构体的麻烦。文章详细讲解了如何实现精简版MyTuple,包括空基类特化、递归主模板和get()方法的实现。在内存布局方面,重点讨论了空基类优化(EBO)对tuple大小的影响。最后展示了tuple在类型查询、万能访问、多返回值、结构化绑定以

文章图片
#c++#开发语言
编译期策略模式:当模板成为策略容器

本文深入探讨了C++中编译期策略模式的实现与应用。传统运行时策略模式虽灵活但存在性能损耗,而编译期策略通过模板将决策提前到编译阶段,实现零成本抽象。文章从基础实现开始,展示了模板参数作为策略载体的方法,逐步引入CRTP和模板方法模式增强扩展性。重点介绍了C++20 Concepts在定义策略契约中的应用,通过概念约束确保策略类型的正确性。最后通过一个可定制的日志记录器实例,演示了如何组合多个编译期

文章图片
#策略模式#c++#开发语言
this:C++ 里的一个坑人关键字

摘要: 本文深入剖析C++中的this指针,揭示其本质与使用陷阱。this是成员函数的隐式参数,用于访问调用对象实例,其类型为ClassName*或const ClassName*。编译器将成员函数转换为全局函数,并隐式传递this,多继承下可能调整其值。常见用法包括解决命名冲突、链式调用和CRTP模式。陷阱包括构造/析构函数中的虚函数行为、delete this的风险及多继承下的指针偏移。通过成

文章图片
#c++#开发语言
C++协程从入门到放弃?不,是从入门到手搓调度器

从最基本的协程概念入手,通过编译错误示例生动展示了C++协程的"仪式感"——必须实现promise_type等核心组件才能让协程正常工作。文章详细解析了协程三大核心概念:PromiseType作为协程控制中心、Awaitable/Awaiter接口实现协程挂起恢复机制、coroutine_handle协程句柄管理生命周期。随后通过手写Task和Generator示例,演示了如何

文章图片
#c++#开发语言
C++ Ranges:我遍历你,但我不拥有你

本文介绍了C++20引入的Ranges库,它通过管道操作符|和视图适配器将数据处理逻辑与迭代器操作解耦,使代码更简洁直观。主要内容包括:1. Ranges解决了传统STL算法需要手动处理迭代器和中间容器的痛点,支持惰性求值和函数式组合;2. 核心概念包括Range(范围)、View(轻量视图)和Range Adaptor(适配器);3. 详细解析了常用视图适配器如filter、transform、

文章图片
#c++#开发语言
C++ 内存序六件套:从完全同步到爱咋咋地

首先讲解了std::atomic的常用操作,包括load/store、exchange、compare_exchange等原子读写方法。然后详细解析了六种内存序:seq_cst提供全局一致性但性能较差;release/acquire实现高效同步;relaxed仅保证原子性;consume因实现困难已被弃用。文章还通过典型应用场景展示了内存序的实际运用。

文章图片
#c++#开发语言
从 C++ 闭包底层上看:你的[]里到底发生了什么?

C++闭包本质上是编译器自动生成的匿名类,通过捕获外部变量实现函数与环境的绑定。闭包的核心机制包括:1)按值捕获存储变量副本,按引用捕获存储变量引用;2)mutable关键字控制闭包内部状态可变性;3)每个lambda表达式生成唯一类型,支持高效内联优化。相比函数指针,闭包具有携带上下文、类型安全、零开销等优势,但需注意引用捕获的生命周期风险。理解闭包的底层实现有助于编写高效可靠的代码。

文章图片
#c++#开发语言
我继承我自己:C++ 模板元编程的小麻花 CRTP

本文介绍了CRTP(奇异递归模板模式)的原理与应用。CRTP通过让派生类继承以自身为模板参数的基类,实现静态多态和代码复用。文章首先解释了CRTP的基本语法和工作原理,然后重点分析了其三大优势:消除虚函数开销、自动生成重复代码和扩展类功能(Mixins)。通过实例展示了CRTP在对象计数、对象池等场景的应用,并解析了标准库中enable_shared_from_this的实现原理。最后讨论了C++

文章图片
#c++#开发语言
从分支预测角度看 C++:为什么你的热循环慢得离谱?

本文探讨了CPU分支预测机制对程序性能的影响。通过实验发现,排序后的数据可使分支预测失败率从8.08%降至3.98%,性能提升显著。文章介绍了流水线执行原理、动态分支预测机制(如两位饱和计数器),并提供了多种优化方法:使用[[likely]]属性优化代码布局、无分支编程技巧、数据预处理使分支行为规律化、处理间接分支问题,以及配置文件引导优化(PGO)。最后强调应结合性能分析工具(如perf)来识别

文章图片
#c++#开发语言
    共 14 条
  • 1
  • 2
  • 请选择