<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wo_jack的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wo_jack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wo_jack]]></copyright><item><title><![CDATA[C++ 入门笔记（十七）：list 入门 —— 为什么 list 不能 sort？]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/170543745</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/170543745</guid><author>wo_jack</author><pubDate>Wed, 11 Nov 2026 16:14:44 +0800</pubDate><description><![CDATA[第17课：用大白话讲清 list 的双向链表结构、哨兵头、push_back 四步、迭代器封装、merge 与 splice 的区别，以及 vector 排序为什么常比 list 快。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十六）：第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/170244574</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/170244574</guid><author>wo_jack</author><pubDate>Sat, 07 Nov 2026 16:50:20 +0800</pubDate><description><![CDATA[第16课复盘：用10个问题讲清 vector 的三指针、= default、拷贝构造、reserve 与 resize、new T[n] 与 uninitialized_copy、insert/erase 迭代器失效，以及 vector<string> 为什么不能 memcpy。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十五）：第15课 vector 的模拟实现 —— 三指针、reserve 深拷贝与迭代器失效]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/170053655</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/170053655</guid><author>wo_jack</author><pubDate>Wed, 04 Nov 2026 22:05:15 +0800</pubDate><description><![CDATA[第15课：从三个指针手写 vector，讲清 reserve 为什么不能 memcpy、resize 的资源释放、insert/erase 迭代器失效，以及 vector<size_t> v(10,1) 被范围构造函数抢走的坑。附 STL30 源码对照。]]></description><category></category></item><item><title><![CDATA[136 / 137 / 260 其实是同一道题：我的位运算三连复盘（附 9 个踩坑）]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/169850928</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/169850928</guid><author>wo_jack</author><pubDate>Tue, 03 Nov 2026 00:13:13 +0800</pubDate><description><![CDATA[今天最惨的一道只过了 5/35。复盘完才发现：136、137、260 其实是同一道题的三种参数——一个整数就是一个集合，异或就是模 2，出现 k 次就模 k。附 9 个踩坑记录。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十四）：string 的 copy-and-swap 与 vector 初探]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/169565293</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/169565293</guid><author>wo_jack</author><pubDate>Fri, 30 Oct 2026 23:56:00 +0800</pubDate><description><![CDATA[第14课：string 的 copy-and-swap、swap 的 O(1) 写法、substr 临时对象、operator>> 的 EOF 坑，以及 vector 的扩容、insert/erase/find 和迭代器失效。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十三）：手写 string 的增删查改 —— 深拷贝、扩容与临时对象]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/169167472</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/169167472</guid><author>wo_jack</author><pubDate>Mon, 26 Oct 2026 18:52:40 +0800</pubDate><description><![CDATA[第13课手写 string：深拷贝、扩容、insert/erase 的挪动、find/substr 的临时对象、六个比较运算符与 operator<<，全部在 VS 2026（MSVC 14.51）实测。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十二）：string 底层初探 —— basic_string 模板、构造与迭代器本质]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/168562500</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/168562500</guid><author>wo_jack</author><pubDate>Wed, 21 Oct 2026 00:56:38 +0800</pubDate><description><![CDATA[本文深入剖析C++ string底层实现，揭示其作为basic_string&lt;char&gt;模板的通用性设计，解释为何比较运算符需三组全局重载以支持多种类型匹配。通过手写简化版string，阐明构造过程（堆内存分配、strcpy拷贝）、迭代器本质即char*指针，以及begin()与end()构成左闭右开区间。强调迭代器封装带来的接口统一性，使不同容器遍历语法一致。实测验证常量区与堆内存分离特性，理解new char[size+1]中+1用于容纳\0。学习方式为“听课+编码验证+AI辅助”，所有代码]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十一）：string 的迭代器、容量管理与增删改]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/168146069</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/168146069</guid><author>wo_jack</author><pubDate>Sat, 17 Oct 2026 00:01:40 +0800</pubDate><description><![CDATA[本文深入剖析C++ string 的迭代器、容量管理与增删改操作。详解四种迭代器的使用场景，强调 const_iterator 与 const_iterator 的本质区别；通过实测对比 reserve（预分配空间，以空间换时间）与 shrink_to_fit（真缩容，以时间换空间）的差异；明确 resize 的三种行为及对 \0 的处理逻辑；对比 [] 断言与 at() 异常抛出的适用场景；指出 insert/erase/replace 因需数据挪动应谨慎使用，并以“空格替换”和“大数相加”为例，展示用 ]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（十）：初识 STL —— string、迭代器与范围 for]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/167919482</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/167919482</guid><author>wo_jack</author><pubDate>Wed, 14 Oct 2026 18:57:08 +0800</pubDate><description><![CDATA[本节课正式进入C++ STL，重点学习string的构造与操作、三种遍历方式（下标、迭代器、范围for）及迭代器的通用性。通过对比C语言字符数组，体会string封装带来的便捷；理解迭代器作为“万能插座”实现算法与容器解耦，支持reverse等算法跨容器通用；掌握auto简化类型声明，提升代码可读性。结合两道LeetCode题实践，巩固字符串处理能力。学习方式为听课+动手验证+AI辅助，所有代码在VS中编译运行，为后续深入STL打下坚实基础。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（九）：new/delete 的底层实现与模板初探]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/167678502</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/167678502</guid><author>wo_jack</author><pubDate>Mon, 12 Oct 2026 10:59:28 +0800</pubDate><description><![CDATA[本节课深入剖析C++中new/delete的底层实现——“两步走”：先调用operator new申请内存，再调用构造函数初始化；delete则反之。通过汇编与实测验证，对比malloc/free，凸显new/delete在自定义类型上的优势：自动初始化、类型安全、异常处理。同时学习new[]/delete[]配对机制及内存池中的定位new，掌握其在内存管理优化中的应用。最后引入函数模板与类模板，实现“一次编写，多类型复用”，体会编译期半自动化带来的高效编程体验。所有内容均通过VS实机验证，强调动手实践与原]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（八）：拷贝消除优化与 C++ 内存分区]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/167284407</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/167284407</guid><author>wo_jack</author><pubDate>Thu, 08 Oct 2026 23:47:46 +0800</pubDate><description><![CDATA[本课聚焦拷贝消除优化与内存分区。通过实测对比，揭示传值返回的三种写法差异：推荐定义时直接接收（如Aaa2=f2()），避免先定义后赋值（如aa3=f2()）导致多一次拷贝与赋值。传参也应优先使用表达式直接构造，避免具名对象传参带来的额外拷贝。同时详解C++内存四区：栈（局部变量，自动释放）、堆（手动管理，易泄漏）、静态区（全局/static变量）、常量区（字符串常量）。强调数组复制内容于栈，指针仅指向常量区；栈小而快，堆大但需手动释放。二者结合，揭示“写法决定性能，内存布局决定资源归属”，为后续类设计奠定基]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（七）：初始化列表、类型转换构造、static 静态成员与友元内部类]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/166143186</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/166143186</guid><author>wo_jack</author><pubDate>Mon, 21 Sep 2026 00:24:11 +0800</pubDate><description><![CDATA[本节系统梳理了C++初始化列表、类型转换构造函数、static静态成员、友元与内部类等核心概念。重点揭示初始化列表按成员声明顺序执行的机制，澄清“书写顺序≠初始化顺序”的常见误区；明确引用、const及无默认构造函数成员必须使用初始化列表；通过JZ64题理解static成员的共享性与生命周期特性，强调其需在类外定义且不会自动重置；剖析explicit防止隐式转换的意义；友元实现类间灵活访问但需谨慎使用，体现封装的精细控制；内部类则提供更紧密的模块化封装。实践验证结合编译错误分析，深化对底层机制的理解，为后续]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（六）：赋值重载、运算符复用与 const 成员函数]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/166012597</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/166012597</guid><author>wo_jack</author><pubDate>Sat, 19 Sep 2026 21:03:09 +0800</pubDate><description><![CDATA[学习方式不变：听课 + 疑惑的地方自己敲 + AI 辅助。这节课的 6 段代码全部在我自己机器上用 VS 的 MSVC 编译器实际编译运行过，包括故意写错让编译器报错的 const 成员函数例子。赋值运算符重载也是个默认成员函数，但它处理的是两个已经存在的对象之间的拷贝赋值：**运行结果：**关键判断标准就一条：这句话是不是在定义一个新对象。这是这节课我觉得最有价值的地方。拷贝构造和赋值重载看起来像，但赋值重载多一个拷贝构造没有的问题：正确的写法是三步：**运行结果：**注意 s2 = s1 之前 s2 已]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（五）：拷贝构造、深浅拷贝与运算符重载]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/165892427</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/165892427</guid><author>wo_jack</author><pubDate>Sat, 19 Sep 2026 00:40:02 +0800</pubDate><description><![CDATA[本文系统梳理C++拷贝构造、深浅拷贝与运算符重载核心概念。重点解析浅拷贝引发的资源共享与重复释放问题，通过Stack类实例说明深拷贝的必要性；强调类若管理资源（如堆内存），必须自定义拷贝构造函数。同时详解运算符重载机制，以Date类加天数为例展示其提升代码可读性的优势，并区分前置与后置++的重载方式。结合实践验证，强化对对象复制语义与表达式直观性的理解，为后续学习赋值重载奠定基础。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（四）：从 Init/Destroy 到构造析构，面向对象的第一步]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/164758230</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/164758230</guid><author>wo_jack</author><pubDate>Wed, 09 Sep 2026 23:46:10 +0800</pubDate><description><![CDATA[本节课系统学习了C++类与对象的核心机制：从类的内存模型（成员变量独立存储、函数共享）到this指针隐式传递，再到构造/析构函数实现对象的自动初始化与资源清理。通过对比C风格栈操作，深刻体会到C++“对象自己管理自己”的思维转变——构造函数替代Init，析构函数自动释放资源，实现RAII思想，有效防止内存泄漏。内存对齐优化访问效率，空指针调用成员函数的运行时行为也加深了对this的理解。虽仅掌握6个默认成员函数中的前两个，但已建立起面向对象编程的安全性与规范性意识。]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（三）：从引用到类，我终于理解了 “语法层和底层是两回事“]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/164456802</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/164456802</guid><author>wo_jack</author><pubDate>Mon, 07 Sep 2026 12:59:09 +0800</pubDate><description><![CDATA[这个点是课堂上老师引出的，我之前完全没考虑过。// 链接错误！f2(2);// 普通函数，正常return 0;编译能过，但链接时报错：**LNK2019: 无法解析的外部符号 "void __cdecl f1 (int)"，函数 main 中引用了该符号为什么？因为 inline 函数在编译时就直接展开了，展开之后就没有函数地址了。普通函数声明定义分离时，链接器会去其他 .obj 文件里找函数地址；]]></description><category></category></item><item><title><![CDATA[C++ 入门笔记（二）：从 C 到 C++，我被引用绕了三天]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/164405481</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/164405481</guid><author>wo_jack</author><pubDate>Sun, 06 Sep 2026 00:39:22 +0800</pubDate><description><![CDATA[&lt;think&gt;我们根据要求，需要生成≤150字的文章摘要。内容关于C++入门笔记，包括缺省参数、函数重载、引用等。摘要要简洁概括。字数限制150字以内。我们写一段摘要，涵盖主要点。&lt;/think&gt;一位C语言学习者学习C++初体验，重点记录缺省参数须从右向左连续、函数重载依赖名字修饰，以及最困惑的引用：别名本质，底层类似const指针，能简化二级指针传参、作为返回值实现左值操作，但不可返回局部变量引用。笔记总结引用与指针区别，并强调C++在语法层面引导新思维方式。]]></description><category></category></item><item><title><![CDATA[八大排序系列（收尾）：从入门到复盘，八种排序算法的完整梳理与学习感悟]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/164226939</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/164226939</guid><author>wo_jack</author><pubDate>Mon, 31 Aug 2026 17:57:14 +0800</pubDate><description><![CDATA[如果说给同样在学排序的新手一条最实用的建议，我会说：不要上来就背代码、背复杂度。先抓住每个算法的核心思想，知道它是解决什么问题、靠什么优化的，再去抠实现细节。理解了底层逻辑，复杂度、稳定性这些特性根本不用死记，自己就能推导出来。]]></description><category></category></item><item><title><![CDATA[通勤路上复盘C++第一课：难，但值得啃]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/164223803</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/164223803</guid><author>wo_jack</author><pubDate>Mon, 31 Aug 2026 16:50:17 +0800</pubDate><description><![CDATA[对我这种习惯碎片化复习的人来说，一份结构清晰的板书价值太高了。预习的时候能顺着框架摸清楚重点，复习的时候能快速串起整节课的逻辑。更重要的是，以后哪天遇到模糊的知识点——明明记得老师讲过，但就是想不起来细节——不用在厚厚的教材里大海捞针，翻板书就能快速找回当时的理解，省了很多无用功。它就像学习路上的锚点，哪怕印象模糊了，也能顺着框架快速找回来。至于接下来的计划，倒没着急列长长的书单。先把眼下的C++基础学透嚼烂，把每一个概念都啃扎实，比囫囵吞枣读多少本都强。慢慢来，比较快。]]></description><category></category></item><item><title><![CDATA[八大排序系列（六）：计数排序 —— 跳出比较框架，用统计思想实现排序]]></title><link>https://blog.youkuaiyun.com/wo_jack/article/details/163833963</link><guid>https://blog.youkuaiyun.com/wo_jack/article/details/163833963</guid><author>wo_jack</author><pubDate>Mon, 17 Aug 2026 22:29:47 +0800</pubDate><description><![CDATA[在我看来，计数排序最适合的场景非常明确：数据是整数（或可以映射为整数），且取值范围不大、元素种类有限。比如年龄排序、百分制分数排序、状态枚举值排序这类场景，数据范围固定且很小，用计数排序的效率会远超所有 O (nlogn) 的比较排序。但如果是通用的、取值范围不确定的数值排序，计数排序就很难胜任了，这也是它没法成为通用排序算法的核心原因。]]></description><category></category></item></channel></rss>