<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Fuyo_0209的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Fuyo_0209</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Fuyo_0209]]></copyright><item><title><![CDATA[深入理解 C++11 核心特性：从零开始构建现代高效代码]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/166689295</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/166689295</guid><author>Fuyo_0209</author><pubDate>Wed, 04 Nov 2026 13:47:33 +0800</pubDate><description><![CDATA[C++11 是 C++ 的第二个主要版本，也是自 C++98 诞生以来最重要的一次更新。在它最终由 ISO 组织于 2011 年 8 月 12 日正式采纳之前，人们通常使用名称“C++0x”，因为它曾被期望在 2010 年之前发布。由于 C++03 与 C++11 之间经历了长达 8 年的时间，这是迄今为止版本间隔最长的一次。自此以后，C++ 保持着每 3 年更新一次的稳定节奏。]]></description><category></category></item><item><title><![CDATA[C++ 运行时多态与虚函数机制全面剖析【面试重点】]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163484022</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163484022</guid><author>Fuyo_0209</author><pubDate>Wed, 04 Nov 2026 13:43:57 +0800</pubDate><description><![CDATA[构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数，并且派生类必须对该虚函数完成重写/覆盖（Override）。只有基类的指针或引用才能既指向基类对象，又指向派生类对象（切片机制）；而只有完成了虚函数重写，派生类与基类才具备不同的函数行为，达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰，该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰，声明为虚函数。]]></description><category></category></item><item><title><![CDATA[C++ 异常处理全攻略：异常规范、栈展开、多态体系设计与异常安全防范]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/167497955</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/167497955</guid><author>Fuyo_0209</author><pubDate>Wed, 04 Nov 2026 13:43:40 +0800</pubDate><description><![CDATA[/ 1. 定义顶层异常基类public:// 构造函数：初始化错误描述信息与错误编号, _id(id)// 虚函数 what：支持多态调用，返回基础错误信息// 获取错误编号return _id;protected:// 错误描述信息int _id;// 错误编号⭐ 语法细节与行为机制：Exception 作为整个异常体系的基类，定义了所有异常共有的核心属性：错误描述 _errmsg 和错误码 _id。]]></description><category></category></item><item><title><![CDATA[深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/168653119</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/168653119</guid><author>Fuyo_0209</author><pubDate>Fri, 30 Oct 2026 23:42:57 +0800</pubDate><description><![CDATA[在 C++ STL 中，关联式容器是日常开发中不可或缺的利器。此前我们已经学习了基于红黑树的 set 和 map，它们能够保证元素有序且支持高效的对数时间复杂度操作。而今天，我们要探索的是基于哈希表实现的无序关联式容器：unordered_set 与 unordered_map。我们将结合具体的测试代码，深入剖析它们的行为特征、核心差异以及性能表现。]]></description><category></category></item><item><title><![CDATA[C++ AVL树保姆级详解：从平衡因子到四大旋转机制]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/168343416</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/168343416</guid><author>Fuyo_0209</author><pubDate>Fri, 30 Oct 2026 23:42:40 +0800</pubDate><description><![CDATA[学完四大旋转，我们可以把它们归纳为一个清晰的记忆口诀：左左高 (-2, -1)→→右单旋（RotateR）。右右高 (2, 1)→→左单旋（RotateL）。左右高 (-2, 1)→→左右双旋（RotateLR）（先左旋子树，再右旋父亲）。右左高 (2, -1)→→右左双旋（RotateRL）（先右旋子树，再左旋父亲）。核心重点：双旋的核心在于“先拉直，后整体压平衡”，并且必须根据插入点位置（即孙子节点的平衡因子）来精准修正各个节点的 _bf。]]></description><category></category></item><item><title><![CDATA[C++ STL 进阶：关联式容器 set 与 map 使用指南]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/164193960</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/164193960</guid><author>Fuyo_0209</author><pubDate>Thu, 29 Oct 2026 17:41:22 +0800</pubDate><description><![CDATA[在 STL 源码中，pairT1 first;// 键 KeyT2 second;// 值 Value// 默认构造函数// 值构造函数// 支持隐式类型转换的拷贝构造函数。Key 的只读限制：因为pair的第一个成员类型显式声明为了const Key，所以从map中获取元素时，无法修改其first成员。]]></description><category></category></item><item><title><![CDATA[【C++ 进阶】二叉搜索树（BST）全景拆解：从原理分析到模板源码实现]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163805306</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163805306</guid><author>Fuyo_0209</author><pubDate>Thu, 29 Oct 2026 17:40:55 +0800</pubDate><description><![CDATA[/ 二叉搜索树节点结构体（Key-Value 模型）K _key;// 关键字 KeyV _value;// 映射值 Value// 指向左孩子的指针// 指向右孩子的指针// 节点构造函数{}// 二叉搜索树类定义// 内部重命名，简化书写public:// C++11 显式生成默认构造函数private:// 类内初始化，防止野指针⭐模板泛型设计：通过 template<class K, class V> 实现 Key 与 Value 的解耦，支持任意类型的比较与映射。]]></description><category></category></item><item><title><![CDATA[彻底搞懂 C++ 模板进阶：特化技巧、STL 仿函数妙用与分离编译陷阱]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163372886</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163372886</guid><author>Fuyo_0209</author><pubDate>Sat, 17 Oct 2026 20:42:58 +0800</pubDate><description><![CDATA[仿函数：本质上是一个重载了圆括号运算符operator()的类或结构体。“仿”在哪里：由于它重载了()，使得该类的对象可以像普通函数一样被调用（例如obj(a, b)相比传统函数指针的优势：仿函数是一个真正的“类对象”，因此它可以包含成员变量来持存状态，并且它的调用会在编译期被内联优化，性能显著优于传统函数指针。在 STL（如std::sort）中，仿函数被大量用作自定义排序规则的比较器。]]></description><category></category></item><item><title><![CDATA[一文彻底搞懂 C++ 继承：从语法特性到底层内存布局与实现原理]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163647162</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/163647162</guid><author>Fuyo_0209</author><pubDate>Mon, 07 Sep 2026 13:40:48 +0800</pubDate><description><![CDATA[在面向对象编程（OOP）中，继承（Inheritance） 是实现代码复用、扩展类功能以及构建层级结构的核心机制。也就是说，继承是指在已有类的基础上建立新类的机制。基类（Base Class / 父类）：被继承的已存在的类，提供通用的属性与行为。派生类（Derived Class / 子类）：基于基类新建的类，自动拥有基类的成员，并可以扩展或修改自身的属性与行为。子类对象的内存： 父类的成员 | 子类独有的成员父类对象的内存： 父类的成员耦合度指的是模块与模块之间（或类与类之间）依赖关系的紧密程度。]]></description><category></category></item><item><title><![CDATA[深度剖析 C++ vector：从接口使用到底层模拟实现全指南]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/162883930</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/162883930</guid><author>Fuyo_0209</author><pubDate>Sat, 25 Jul 2026 15:16:20 +0800</pubDate><description><![CDATA[由于扩容导致旧空间被释放，迭代器指向了无效的野指针区域。]]></description><category></category></item><item><title><![CDATA[C++中的活字印刷术——模板·初阶]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160562574</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160562574</guid><author>Fuyo_0209</author><pubDate>Thu, 21 May 2026 13:25:19 +0800</pubDate><description><![CDATA[同名的非模板函数（普通函数）可以和模板函数同时存在。普通函数和实参完全匹配 -> 优先调用普通函数。普通函数不匹配 -> 编译器自动调用模板。在函数名后加上< 类型 > -> 显式实例化模板，编译器强制使用模板。定义格式class 类模板名// 类内成员定义模板形参建议：在类模板中，如果函数形参是模板类型（如T），推荐使用常引用（const T&），以避免不必要的拷贝开销。C++扩容特性C++ 没有像 C语言中realloc那样可以自动就地或异地扩容的renew机制。]]></description><category></category></item><item><title><![CDATA[C++ 内存管理]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160504454</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160504454</guid><author>Fuyo_0209</author><pubDate>Mon, 27 Apr 2026 12:21:35 +0800</pubDate><description><![CDATA[在申请自定义类型的空间时，new会自动调用自定义类型的构造函数，delete会自动调用析构函数，而malloc和free都不会。这就是new和delete与malloc和free最大的区别。int _a2;int main()// 申请3个数据类型为A的空间（调用三次默认构造）]]></description><category></category></item><item><title><![CDATA[带你了解C++的类与对象（下）]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160262204</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/160262204</guid><author>Fuyo_0209</author><pubDate>Fri, 24 Apr 2026 20:13:57 +0800</pubDate><description><![CDATA[每个成员都要走初始化列表在初始化列表初始化的成员（显式写）没有在初始化列表初始化的成员（不显式写）a. 声明的地方有缺省值用缺省值b. 没有缺省值- x: 内置类型，不确定是否初始化，看编译器，大概率是随机值。- y: 自定义类型，调用默认构造，没有默认构造就编译报错。引用 const 无默认构造的自定义类型，必须在初始化列表初始化。]]></description><category></category></item><item><title><![CDATA[带你了解C++的类与对象（中）]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159867301</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159867301</guid><author>Fuyo_0209</author><pubDate>Sun, 19 Apr 2026 19:11:53 +0800</pubDate><description><![CDATA[编译器自己生成的构造，只做相对浅显的初始化操作，因此大部分构造函数的初始化操作，都需要我们自己手搓；但是！当类的成员变量，只包含自定义成员变量时，编译器自己生成的构造，就足够了。例：用两个栈（Stack）来实现队列（MyQueue）//自己实现栈，需要自己写public://构造函数return;_top = 0;private://两个栈实现队列 - 不需要自己写public://编译器默认生成 MyQueue 的构造函数，调用了 Stack 的构造。]]></description><category></category></item><item><title><![CDATA[带你了解C++的类与对象（上）]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159769953</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159769953</guid><author>Fuyo_0209</author><pubDate>Sun, 12 Apr 2026 09:58:41 +0800</pubDate><description><![CDATA[/类的方法//...void Pop()//...int top()//...//类的属性int* _a;int _top;//分号不可省略class为定义类的关键字，Stack为类的名字，{}中为类的主体，注意类定义结束时，后面的分号不能省略。类中的变量，称为类的属性 或 成员变量；类中的函数，称为类的方法 或 成员函数。为了区分成员变量，一般习惯上成员变量会加一个特殊标识，如成员变量或者后面加_或者m开头。注意C++中这个并非强制要求，只是一些惯例。]]></description><category></category></item><item><title><![CDATA[C++入门基础]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159619931</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159619931</guid><author>Fuyo_0209</author><pubDate>Sat, 04 Apr 2026 15:18:40 +0800</pubDate><description><![CDATA[定义命名空间，需要用到namespace关键字，后面跟命名空间的名字，然后接一对{}即可（注，末尾无需加分号“;”）{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义一个域，这个域跟全局域各自独立，不同的域可以定义同名变量，所以rand就不再冲突了。C++中域有局部域全局域命名空间域类域。域影响的是编译时语法查找一个变量/函数/类型出处（声明或定义）的逻辑，所以有了域隔离，名字冲突就解决了。]]></description><category></category></item><item><title><![CDATA[二叉树的遍历和实现]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159476624</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/159476624</guid><author>Fuyo_0209</author><pubDate>Sun, 29 Mar 2026 13:22:40 +0800</pubDate><description><![CDATA[了。这里和前文保持一致，建小堆来实现降序。]]></description><category></category></item><item><title><![CDATA[带你了解栈和队列（附OJ题）]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/158585020</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/158585020</guid><author>Fuyo_0209</author><pubDate>Wed, 04 Mar 2026 16:56:06 +0800</pubDate><description><![CDATA[例如：压栈数据1 2 3 4，若在压栈的同时也能进行出栈操作，则顺序可以是4 3 2 1，也可以是1 4 3 2 等。数组和单链表差别不大，但双链表却多了一个指针（prev），因此双链表会造成空间冗余，浪费内存，所以排除使用双链表。题目：给定一个只包括 ‘(’，‘)’，‘{’，‘}’，‘[’，‘]’ 的字符串 s ，判断字符串是否有效。删除元素时，无法通过free删除数组中的某个元素，因此将head++即可，同样要注意。注意：出队顺序和入队顺序一样，有且仅有一种：最先入队列的数据，就是最先出队的数据。]]></description><category></category></item><item><title><![CDATA[单链表的实现]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/157700539</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/157700539</guid><author>Fuyo_0209</author><pubDate>Wed, 11 Feb 2026 15:37:43 +0800</pubDate><description><![CDATA[总结：本博客所述的单链表是一种，不带头单向不循环链表。单链表和双向带头循环链表（与单链表相对的双链表。]]></description><category></category></item><item><title><![CDATA[带你了解顺序表的功能并实现]]></title><link>https://blog.youkuaiyun.com/Fuyo_0209/article/details/157676650</link><guid>https://blog.youkuaiyun.com/Fuyo_0209/article/details/157676650</guid><author>Fuyo_0209</author><pubDate>Tue, 03 Feb 2026 14:46:24 +0800</pubDate><description><![CDATA[通讯录包含的信息较多，如人的姓名，性别，年龄，电话，地址等。因此，通讯录中的数据类型应为结构体，便于存储多种不同的数据类型（如整型和字符型）。此结构体的定义peoInfo//姓名、性别、年龄、电话、地址int age;}peoInfo;//该结构体已改名为：peoInfo要给顺序表改个名字，叫做通讯录改名是为了增加代码辨识度，让人看懂代码//注意，不能将struct SeqList 直接写成SL为什么不能将 struct SeqList 直接写成SL呢？]]></description><category></category></item></channel></rss>