- 博客(14)
- 收藏
- 关注
原创 前缀和&差分
技巧核心作用典型场景时间复杂度优化一维前缀和快速求子数组和频繁查询 “区间和”(如统计子数组和)查询从 O (n)→O (1)二维前缀和快速求子矩阵和频繁查询 “子矩阵和”(如矩阵区域和)查询从 O (nm)→O (1)一维差分快速对区间元素统一加减频繁更新 “区间元素”(如区间加 k)单次更新从 O (n)→O (1)二维差分快速对子矩阵元素统一加减频繁更新 “子矩阵元素”(如矩阵区域加 k)单次更新从 O (nm)→O (1)
2025-08-22 00:12:57
573
原创 <iomanip> 头文件中的操纵符控制 cout 的输出精度
控制有效数字总数:直接使用控制小数点后位数:先使用fixed,再用所有操作都需要包含<iomanip>头文件格式设置会持续生效,直到被重置或设置新的格式。
2025-08-18 23:48:28
156
原创 C++ 四种类型转换:静态转换、动态转换、常量转换和重新解释转换
在 C++ 中,类型转换是将一个数据类型的值转换为另一种数据类型的过程。:用于基本数据类型之间的转换,以及继承层次中相关类的指针 / 引用转换(如向上转换或向下转换)。:主要用于继承层次中的安全向下转换(基类指针 / 引用 → 派生类指针 / 引用)。:用于不相关类型之间的强制转换(如指针 → 整数,或指针 → 不相关类型的指针)。
2025-07-10 20:44:18
343
原创 重定位详解
重定位的核心就是 **“把程序中的相对地址(相对于文件自身的地址),转换为内存中的绝对地址”**。这个过程可能发生在编译时(静态链接)、加载时(动态链接)或运行时(动态加载),取决于程序的链接方式。拓展: 链接时重定位和运行时重定位链接时重定位和运行时重定位是 “重定位” 在不同阶段的具体实现,核心区别在于发生的时机、处理的主体,以及解决的问题。链接时重定位是 “编译链接阶段给程序‘焊死’固定地址”,适合简单、静态的场景;
2025-07-10 19:02:19
2260
原创 代码是如何一步步从源文件变成可执行文件的?
源文件是程序员用高级语言编写的原始代码文件,如C++的.cpp和Python的.py文件,包含程序逻辑和算法。通过编译将源代码转换为二进制语言,经历预处理、编译和汇编阶段生成目标文件。链接阶段将多个目标文件与库文件整合,分为静态链接(打包库代码)和动态链接(运行时加载库)。最终生成可执行文件(如Windows的.exe或Linux的无后缀文件),操作系统加载执行,完成从代码到可运行程序的转化过程。
2025-07-10 17:10:44
475
原创 lambda表达式
C++11 引入的 Lambda 表达式是现代 C++ 中最强大的特性之一,它允许在代码中定义匿名函数,极大地提升了代码的灵活性和可读性。本文将深入探讨 Lambda 表达式的语法、捕获列表、使用场景以及编译器实现原理。Lambda 表达式是 C++ 中强大而灵活的特性,通过简洁的语法实现匿名函数,尤其在 STL 算法、事件处理、异步编程中应用广泛。捕获列表是 Lambda 表达式的核心特性,允许访问外部作用域的变量。默认情况下,值捕获的 Lambda 函数是常量函数,无法修改捕获的变量。
2025-07-01 23:57:50
434
原创 C++ 闭包全解析
闭包是 C++ 中强大的编程工具,通过 Lambda 表达式和函数对象,它能够捕获并封装外部状态,实现代码的简洁性与灵活性。但使用时需注意生命周期管理和线程安全问题。掌握闭包,将为你的 C++ 编程带来更高效的回调设计、更优雅的异步处理和更模块化的代码结构。
2025-06-30 23:52:27
360
原创 function,lambda,bind之间的关系
lambda与lambda编译后是函数对象,可直接赋值给匹配签名的,让承载 lambda 的逻辑,实现 “用统一类型管理匿名函数”。bind与bind产出的函数对象,也能存到里,用统一类型封装、传递绑定后的逻辑。lambda与bind:二者常配合:用bind预处理函数参数,再用lambda写灵活逻辑;或 lambda 里调用bind适配的函数,组合出更复杂调用。统一角色是 “容器 / 载体”,负责类型抽象和统一管理;lambda是 “快捷创建函数对象的语法”,轻量写临时逻辑;bind。
2025-06-30 23:42:36
1419
原创 std::function和std::bind
是一个通用的多态函数包装器,可存储、复制和调用任何可调用对象(函数、lambda、成员函数等)。是 C++ 标准库中用于处理函数对象的工具,它们常一起用于实现回调机制、延迟调用或函数包装。C++11 引入的 lambda 表达式通常比。返回的适配器通常需要用。
2025-06-30 22:21:18
240
原创 this指针?详解实现原理
this给每个非静态成员函数添加一个隐藏的this参数。把成员访问操作转换为通过this指针进行的间接访问。根据调用约定,通过寄存器或者栈来传递this指针。在虚函数调用时,确保this指针能正确指向对象的实际类型。
2025-06-30 11:18:22
333
原创 在C++中,结构体和类有什么区别?
其他方面(如成员函数、构造析构、继承多态等)几乎完全一致。这种区分更多是编程风格的约定,而非强制语法规则。,但遵循约定能提高代码可读性。
2025-06-30 11:03:21
420
原创 结构体所有定义方式及C与C++区别
NWORKER;// NWORKER为结构体别名通过typedef为结构体创建别名,后续声明变量无需写struct关键字定义格式为typedef struct 标签 {成员} 别名;适用场景:需要频繁声明该结构体变量的场景,简化代码书写保留 C 语言原始结构体定义语法,未使用类型别名声明变量时必须使用完整格式struct 标签 变量名;适用场景:仅在少数场景使用该结构体,或与 C++ 兼容的代码} NWORKER;// 仅有别名,无结构体标签省略结构体标签(
2025-06-30 11:01:29
2160
原创 深入浅出函数指针
本文摘要:C++函数指针详解 函数指针是C++中指向函数的指针变量,其声明语法为返回类型(*指针名)(参数列表)。函数指针与数据指针类型不同,不能互相转换。使用函数指针时可以直接调用,无需显式解引用。函数指针常用于: 作为函数参数(自动转换为指针) 通过typedef/using或decltype简化复杂声明 函数不能直接返回函数,但可以返回函数指针 使用尾置返回类型(auto...->)可提高复杂指针返回的可读性 典型应用场景包括回调函数、策略模式等需要动态选择算法的情况。正确使用函数指针可以增强代
2025-06-30 00:18:03
594
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人