C++学习笔记
文章平均质量分 81
jinyishu_
两句三日得,一跑双泪流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树进阶算法题详解
这篇文章讲解了二叉树的6道进阶算法题,涵盖层序遍历、非递归遍历和最近公共祖先等核心问题。每道题配有题目解析、算法思路和代码实现。原创 2026-08-08 09:45:15 · 871 阅读 · 3 评论 -
C++ IO 库指南
本文系统讲解 C++ 标准 IO 库的核心知识,涵盖继承体系、流状态管理与错误恢复、输出缓冲区机制、文件文本与二进制读写、以及 string 流序列化。从原理到实战,帮你彻底搞懂 cin/cout、fstream、stringstream 的使用细节与常见陷阱。原创 2026-08-05 15:44:06 · 362 阅读 · 0 评论 -
C++类型转换完全指南
本文系统讲解了C++中的类型转换机制。首先回顾了C语言的隐式转换和显式强转,随后详细解析了C++的类型转换体系:包括内置类型与自定义类型的相互转换(通过构造函数和类型转换运算符)、四种命名强制转换(static_cast/reinterpret_cast/const_cast/dynamic_cast)的使用场景及原理。原创 2026-08-04 14:19:07 · 316 阅读 · 3 评论 -
C++哈希扩展实战
本文探讨了处理海量数据的两种高效数据结构——位图和布隆过滤器。当数据规模超出内存容量时,位图通过1bit标记整数存在状态,仅需512MB空间即可实现O(1)查询。而针对位图仅支持整型的局限,布隆过滤器通过多哈希函数扩展支持任意数据类型,以可控误判率换取空间效率。原创 2026-08-04 13:23:25 · 397 阅读 · 0 评论 -
C++继承与多态进阶
这篇文章将基于 SGI-STL 源码分析,带你深入 C++ 继承与多态的底层世界。文章会从**菱形虚拟继承的内存模型**讲到**单继承和多继承的虚函数表结构**,力求让你读完后有一种"原来如此"的通透感。原创 2026-08-02 22:47:17 · 347 阅读 · 4 评论 -
C++栈与队列进阶实战
本文是栈和队列的扩展学习,介绍了反向迭代器的实现和用中缀转后缀的思想实现简单计算器的过程。原创 2026-08-02 17:21:53 · 325 阅读 · 2 评论 -
C++智能指针的使用及其原理
本文从异常安全与资源管理的角度出发,系统讲解了智能指针的设计原理与应用方法。首先通过裸指针在异常场景下导致的内存泄漏问题,引出RAII(资源获取即初始化)的核心思想,并手写简化版智能指针演示其工作机制。随后对比标准库四大智能指针:已废弃的auto_ptr(管理权转移陷阱)、独占式的unique_ptr(C++11首选)、引用计数的shared_ptr及其配套的weak_ptr(解决循环引用)。文章深入剖析了shared_ptr的引用计数实现原理、线程安全问题,并提供了智能指针的选择策略与内存泄漏防范建议。原创 2026-07-29 16:24:28 · 332 阅读 · 0 评论 -
C++异常处理完全指南
本文详细讲解了C++异常的抛出、捕获、栈展开、继承体系、重新抛出、异常安全、noexcept,最后手搓一个多模块项目的异常处理框架。原创 2026-07-28 23:42:32 · 349 阅读 · 4 评论 -
C++11:从可变参数模板到bind绑定器
本文介绍C++11三大核心特性:1) 可变参数模板通过递归展开或参数包展开方式支持任意数量参数;2) lambda表达式提供匿名函数功能,可捕获外部变量;3) function+bind组合实现可调用对象的包装与参数绑定。这些特性显著提升了代码简洁性和灵活性,解决了传统函数重载和函数指针的局限性。文章通过实例代码详细演示了每种特性的使用方法,包括可变参数模板的递归展开技巧、lambda的捕获规则以及bind的参数绑定机制,帮助开发者编写更现代原创 2026-07-27 17:26:43 · 364 阅读 · 4 评论 -
C++11初探:C++发展史上的里程碑
C++11是C++发展史上的重大转折点,解决了C++98/03标准长期存在的痛点。本文重点探讨了C++11引入的核心特性: 统一初始化语法:通过std::initializer_list实现了各类对象的{}初始化方式,消除了数组与容器初始化不一致的问题。 右值引用与移动语义:明确定义了左值/右值的概念(能否取地址),引入右值引用(&&)支持资源的高效转移,解决了深拷贝性能问题。 完美转发机制:结合万能引用和std::forward实现了参数的完美转发。原创 2026-07-26 23:09:08 · 369 阅读 · 4 评论 -
封装哈希表模拟实现 unordered_map 和 unordered_set
本文讲解了如何用一套哈希表代码模拟实现unordered_map和unordered_set。核心设计包括:1)通过模板参数T和KeyOfT策略模式实现数据与逻辑分离,支持不同容器类型;2)重构哈希节点为泛型HashNode<T>;3)实现支持跨桶遍历的迭代器,利用Ref和Ptr模板参数统一处理普通和const迭代器;4)通过模板参数重构HashTable,提供统一的插入、查找接口;5)分别封装unordered_map和unordered_set。原创 2026-07-25 16:17:01 · 765 阅读 · 6 评论 -
哈希表原理与实现_链地址法
本文介绍了链地址法哈希表的实现,核心思想是通过链表解决哈希冲突。主要内容包括:链地址法通过链表挂载冲突元素;节点设计采用链表节点+指针数组;复用上篇哈希函数;构造函数初始桶数为质数;插入采用头插法,负载因子设为1;扩容时直接迁移节点而非新建;查找通过哈希定位+链表遍历;删除为标准链表操作;最后对比了开放定址法与链地址法的优缺点。链地址法能有效解决冲突问题,是C++ unordered_map的实现方式。原创 2026-07-25 09:46:06 · 412 阅读 · 3 评论 -
C++ STL unordered_map 与 unordered_set 使用详解
本文全面介绍C++11中的无序关联容器unordered_map和unordered_set的核心用法与实战技巧。主要内容包括:二者与有序容器的本质区别;核心API详解;自定义哈希函数的方法;典型应用场景如单词统计、两数之和算法题;以及常见陷阱。文章通过对比表格和代码示例,帮助开发者根据需求选择合适容器,并规避常见错误,充分发挥哈希表的高效特点。原创 2026-07-24 22:11:15 · 291 阅读 · 7 评论 -
哈希表原理与开放定址法C++实现
本文从哈希表的核心思想出发,详细讲解了使用开放定址法实现哈希表的关键技术。主要内容包括:哈希函数的设计、开放定址法的线性探测实现、三态标记解决删除问题,以及扩容策略。原创 2026-07-24 17:24:40 · 564 阅读 · 3 评论 -
从红黑树到 map/set ——看穿 STL 的封装艺术
本文深入解析了STL中set和map如何基于同一棵红黑树实现的设计思路。通过剖析SGI-STL源码,揭示了红黑树的泛型改造过程:将节点数据类型从固定pair<K,V>改为模板参数T,并引入KeyOfT仿函数实现key的提取,使同一套红黑树能同时支持set(value_type=K)和map(value_type=pair<const K,V>)。原创 2026-07-23 20:59:55 · 446 阅读 · 6 评论 -
红黑树原理与C++实现详解
作为一棵自平衡二叉搜索树,红黑树没有追求 AVL树那样"左右子树高度差不超过 1"的绝对平衡,而是通过一套简洁的颜色标记规则,将树的高度始终控制在 2log(N+1)以内。原创 2026-07-23 15:17:33 · 338 阅读 · 4 评论 -
C++ map 和 set 使用详解
本文从 C++ STL 关联式容器出发,系统讲解了 set、multiset、map、multimap 四大容器的使用方式与设计原理。原创 2026-07-21 14:38:01 · 402 阅读 · 3 评论 -
二叉搜索树详解
学 C++ 绕不开 map 和 set,而 map/set 的底层绕不开二叉搜索树。本文从零搭建一个模板化的 BST,逐行拆解查找、插入、删除的实现细节,覆盖 Key 模型和 Key-Value 模型两套完整代码,附带门禁系统、英汉词典、词频统计等实际场景,适合想要系统吃透搜索树结构的 C++ 学习者。原创 2026-07-19 18:00:31 · 615 阅读 · 3 评论 -
C++ 多态完全指南:从基础语法到底层原理
本文介绍了C++面向对象编程的三大特性之一:多态。从运行时多态的三大构成条件(基类指针/引用、虚函数、重写)出发,结合两个完整示例建立直观理解,进而深入虚函数表的底层原理——通过内存布局图、派生类虚表覆盖过程和动态绑定的汇编代码逐层剖析多态的实现机制。原创 2026-07-18 14:30:20 · 525 阅读 · 1 评论 -
C++ 继承全解:从基础到高级特性
本文详细介绍了C++面向对象编程的三大特性之一——继承。读完本文,你就能够避开继承的“坑点”,驾驭它的使用方法了原创 2026-07-17 16:45:25 · 401 阅读 · 4 评论 -
C++ 模板进阶——从非类型参数到分离编译,彻底搞懂模板的“坑“与“巧“
C++ 模板不止是 template<class T> 这么简单。本文从三个进阶话题出发:非类型模板参数让你把值写进 <>,模板特化给特定类型" 开小灶",模板分离编译则是几乎每个初学者都会撞上的链接错误——为什么模板的声明和定义不能分文件写?文章用真实代码还原案发 现场,从编译链接原理讲清根因,并给出两种解决方案。配合丰富的代码示例和对比表格,帮你把模板从"能用"提升到"能懂"。原创 2026-07-16 22:51:14 · 378 阅读 · 0 评论 -
模拟实现 C++ 栈和队列——从适配器模式看懂 STL 容器之美
本文会手把手带你模拟实现STL库中的stack、queue和priority_queue,借此过程理解适配器模式以及仿函数的概念,并认识一种新的数据结构deque。阅读本文一定会让你对于STL库以及类和对象相关的知识理解更加深刻。原创 2026-07-16 14:45:51 · 392 阅读 · 0 评论 -
手把手模拟实现 C++ STL::list——从双向链表看懂迭代器设计
本文从零开始模拟实现 C++ STL 中的 `list` 容器,核心内容包括:哨兵头节点的循环双向链表结构、通过三个模板参数统一 iterator 与 const_iterator 的设计技巧、`insert`/`erase` 的底层实现与复用,以及 list 与 vector 在迭代器失效问题上的本质区别。全文以"先写一版,发现问题,再优化"的演进思路展开,适合学完类和对象、模板基础后想要进阶的读者。原创 2026-07-15 10:04:21 · 331 阅读 · 0 评论 -
手把手模拟实现 C++ STL::vector——从底层看懂动态数组
本文从零开始,用约 220 行 C++ 代码模拟实现 STL 中 vector 的核心功能。内容涵盖三指针底层模型、迭代器设计、深浅拷贝、容量管理策略、insert/erase 中的迭代器失效问题,以及 copy-and-swap 等现代 C++ 惯用法。全文以"踩坑—分析—修正"的思路展开,适合学完 C++ 基础、想要深入理解标准库容器底层原理的读者阅读。原创 2026-07-13 14:34:10 · 371 阅读 · 0 评论 -
STL底层一窥——string类的模拟实现
本文详细介绍了如何模拟实现一个简化版的C++ string类原创 2026-07-12 15:00:22 · 171 阅读 · 0 评论 -
C++ string使用方法
本文介绍了C++标准模板库(STL)中的字符串类string,重点讲解了其核心功能和使用方法。主要内容包括:STL的历史发展和四大主流实现版本;string类相比C风格字符串的优势;string的构造函数、访问方法、遍历方式、容量管理等基础操作;常用字符串处理算法如反转、查找、替换的实现;以及C++11引入的auto关键字和范围for循环等语法特性。文章通过大量代码示例演示了string类的实际应用,并分析了不同操作的时间复杂度,为C++开发者提供了全面的string使用指南。原创 2026-07-11 16:35:59 · 195 阅读 · 0 评论 -
C++ 内存管理与模板
本文系统讲解了C++内存管理与模板技术两大核心内容。在内存管理部分,详细分析了程序内存布局(栈、堆、数据段等区域)、new/delete实现原理及其与malloc/free的区别,并介绍了定位new表达式。模板技术部分深入探讨了函数模板和类模板,包括模板概念、实例化方式(隐式/显式)、参数匹配规则等。特别强调了类模板必须显式实例化,以及模板声明与实现应放在同一文件中的规范。通过大量代码示例,帮助读者掌握C++底层内存机制和泛型编程思想,为开发高性能、类型安全的程序奠定基础。原创 2026-07-09 23:05:37 · 327 阅读 · 0 评论 -
C++ 类和对象(下)
本文接着上文内容介绍了类和对象的相关知识。原创 2026-07-09 15:42:09 · 194 阅读 · 0 评论 -
C++ 类和对象
本文系统介绍了C++类的核心概念与实现方法。首先讲解了类的定义格式、访问限定符和类域等基础内容,重点阐述了封装特性。其次详细解析了实例化过程、对象内存布局和this指针机制,对比了C与C++实现栈的差异。文章深入剖析了6个默认成员函数:构造函数、析构函数、拷贝构造、赋值重载等,通过日期类案例演示了运算符重载的实践应用,包括加减运算、比较运算和流操作符重载等。最后完整实现了一个具有日期计算功能的Date类,展示了面向对象编程的封装、运算符重载等核心技术的综合运用。原创 2026-07-08 11:35:08 · 443 阅读 · 0 评论 -
C++基础
本文介绍了C++的语法基础,包括:1. 命名空间机制 2. 标准输入输出流及其运算符重载特性 3. 缺省参数的使用规范和语法约束 4. 函数重载的实现原理及匹配规则 5. 引用类型的概念、使用场景及与指针的对比 6. 内联函数的优化原理及其对宏函数的替代作用 7. nullptr关键字相比NULL的类型安全优势。原创 2026-07-05 12:38:27 · 370 阅读 · 0 评论
分享