<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>C++那些事</title>
<link>https://light-city.github.io/stories_things/</link>
<description>Stories About C++ (CPlusPlusThings) — a structured, multi-language guide to modern C++11/14/17/20, STL internals, concurrency, idioms and hands-on projects, companion site of the open-source CPlusPlusThings repository.</description>
<atom:link href="https://light-city.github.io/stories_things/feed.xml" rel="self" type="application/rss+xml"/>
<language>zh-CN</language>
<item><title>STL vector 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/vector.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/vector.zh/</guid><pubDate>2026-10-13</pubDate><description>vector的数据安排以及操作方式，与array非常相似。两者的唯一差别在于空间的运用的灵活性，array是静态的，一旦配置了就不能改变，而 vector是动态空间，随着元素的加入，它的内部机制会自行扩充空间以容纳新元素。下面一起来看一下…</description></item>
<item><title>STL unordered_map 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/unordered_map.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/unordered_map.zh/</guid><pubDate>2026-10-13</pubDate><description>前面学到了hashtable，而这节是hashtable的容器适配器：unordered_map。</description></item>
<item><title>STL typename 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/typename.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/typename.zh/</guid><pubDate>2026-10-13</pubDate><description>STL底层源码有下面几行,typedef与typename联用,这几个看着好复杂,究竟啥意思,我们今天一起来剖析!</description></item>
<item><title>STL traits 类型萃取 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/traits.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/traits.zh/</guid><pubDate>2026-10-13</pubDate><description>在 STL 编程中，容器和算法是独立设计的，即数据结构和算法是独立设计的，连接容器和算法的桥梁就是迭代器了，迭代器使其独立设计成为可能。</description></item>
<item><title>STL 迭代器失效 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/stl-iterator-invalidation.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/stl-iterator-invalidation.zh/</guid><pubDate>2026-10-13</pubDate><description>除非另有明确规定（无论是显式规定还是通过其他函数定义函数），调用容器成员函数或将容器作为参数传递给库函数不应使该容器内对象的迭代器失效或改变其值。 [23.2.1/11]</description></item>
<item><title>STL set 与 multiset | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/set-and-multiset.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/set-and-multiset.zh/</guid><pubDate>2026-10-13</pubDate><description>set/multiset以rb_tree为底层结构，因此有元素自动排序特性。排序的依据是key，而set/multiset元素的value和key合二为一：value就是key。</description></item>
<item><title>STL 红黑树实现 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/rb-tree.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/rb-tree.zh/</guid><pubDate>2026-10-13</pubDate><description>STL中Red-black tree（红黑树）class,用来当做SLT关系式容器（如set,multiset,map, multimap）.</description></item>
<item><title>STL queue 与 stack 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/queue-and-stack.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/queue-and-stack.zh/</guid><pubDate>2026-10-13</pubDate><description>template&lt;typename Tp, typename Sequence = deque&lt;Tp&gt; &gt; class stack</description></item>
<item><title>STL map 与 multimap | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/map-and-multimap.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/map-and-multimap.zh/</guid><pubDate>2026-10-13</pubDate><description>map/multimap 以rb_tree为底层结构，因此有元素自动排序特点，排序的依据是key。</description></item>
<item><title>STL list 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/list.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/list.zh/</guid><pubDate>2026-10-13</pubDate><description>双向环状链表从节点值为3开始插入，红色框表示最后一个节点end指向的节点。黄色线条表示指向前驱节点，黑色线条表示指向后继节点。</description></item>
<item><title>STL 迭代器源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/iterator.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/iterator.zh/</guid><pubDate>2026-10-13</pubDate><description>本节使用上节Traits特性，研究iterator源码，来实现一个简单的iterator_category，同时对iterator的源码结构进行分析。</description></item>
<item><title>STL hashtable 哈希表 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/hashtable.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/hashtable.zh/</guid><pubDate>2026-10-13</pubDate><description>哈希表，是作为unordered_map与unordered_set等的底层容器，自gcc2.9后源码量大增！</description></item>
<item><title>STL 手写哈希表实现 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/hashtable-custom.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/hashtable-custom.zh/</guid><pubDate>2026-10-13</pubDate><description>目的：手写实现一个哈希表，采用拉链法构建，每个hash(key)对应的是一个红黑树。</description></item>
<item><title>STL 空基类优化 EBO | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/ebo-empty-base-optimization.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/ebo-empty-base-optimization.zh/</guid><pubDate>2026-10-13</pubDate><description>本节从空类开始，到STL内部，到测试，再到我们自己实现一个EBO，对比性能，最后再测试，总结。</description></item>
<item><title>STL deque 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/deque.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/deque.zh/</guid><pubDate>2026-10-13</pubDate><description>deque是一种双向开口的分段连续线性空间(简单理解为：双端队列)，可以在头尾端进行元素的插入和删除。</description></item>
<item><title>STL string 面试题精讲 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/cpp-string-interview.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/cpp-string-interview.zh/</guid><pubDate>2026-10-13</pubDate><description>今天给大家分享一个字符串相关的面试题目，总共有4个case，可以在留言区评论，说出这四处会发生什么。</description></item>
<item><title>STL string 深析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/cpp-string-deep-dive.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/cpp-string-deep-dive.zh/</guid><pubDate>2026-10-13</pubDate><description>当我们使用C++时，&lt;string&gt;库的基础知识比较熟悉，尤其是在C++中创建字符串时使用的std::string。这无疑是对旧的C风格“字符串”（使用以空字符结尾的字符数组）的一种改进。然而，C++标准库在C++17和C++20中引入了…</description></item>
<item><title>STL array 源码剖析 | C++那些事</title><link>https://light-city.github.io/stories_things/stl-source-analysis/array.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/stl-source-analysis/array.zh/</guid><pubDate>2026-10-13</pubDate><description>C++ tr1全称Technical Report 1，是针对C++标准库的第一次扩展。C++标准c++0x会包括它，以及一些语言本身的扩充。</description></item>
<item><title>C++ 学习知识库 | C++那些事</title><link>https://light-city.github.io/stories_things/resources/feishu-cpp-knowledge-base.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/resources/feishu-cpp-knowledge-base.zh/</guid><pubDate>2026-10-13</pubDate><description>[互联网大厂面试实录](https://hmpy6adnp5.feishu.cn/docx/OitBdRB4KozIhTxQt7Ec7iFDnkc)；[拿下 offer 之必备面经](https://hmpy6adnp5.feishu.c…</description></item>
<item><title>C++ 学习资源与书单 | C++那些事</title><link>https://light-city.github.io/stories_things/resources/cpp-learning-resources.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/resources/cpp-learning-resources.zh/</guid><pubDate>2026-10-13</pubDate><description>Modern C++ Designhttps://book.douban.com/subject/1755195/</description></item>
<item><title>B 站 C++ 视频教程 | C++那些事</title><link>https://light-city.github.io/stories_things/resources/bilibili-cpp-tutorials.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/resources/bilibili-cpp-tutorials.zh/</guid><pubDate>2026-10-13</pubDate><description>相关视频在 B 站更新，B 站搜索用户：未来的光城，或点击下方分集链接。</description></item>
<item><title>C++ 重点实战练习 | C++那些事</title><link>https://light-city.github.io/stories_things/practical-exercises/key-cpp-exercises.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/practical-exercises/key-cpp-exercises.zh/</guid><pubDate>2026-10-13</pubDate><description>├── 中括号重载.cpphttps://github.com/Light-City/CPlusPlusThings/tree/master/practicalexercises/keyexercises/bracketoverloading.</description></item>
<item><title>C++ 十日速成练习 | C++那些事</title><link>https://light-city.github.io/stories_things/practical-exercises/10-day-cpp-crash-course.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/practical-exercises/10-day-cpp-crash-course.zh/</guid><pubDate>2026-10-13</pubDate><description>[x] [day1](https://github.com/Light-City/CPlusPlusThings/tree/master/practical_exercises/10_day_practice/day1)</description></item>
<item><title>C++20 三路比较运算符 &lt;=&gt; | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/spaceship-operator.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/spaceship-operator.zh/</guid><pubDate>2026-10-13</pubDate><description>三向比较运算符&lt;=&gt;又称为宇宙飞船运算符，返回值有三种排序，下面从gcc源码角度来深入聊一下。</description></item>
<item><title>C++20 [[no_unique_address]] | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/no-unique-address.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/no-unique-address.zh/</guid><pubDate>2026-10-13</pubDate><description>通常程序运行时内存是一个比较大的问题，如何减少内存占用和提升访问速度是至关重要。为了解决这些问题，C++20 引入了 no_unique_address 特性，并结合空基类优化（EBO, Empty Base Optimization）…</description></item>
<item><title>C++20 [[likely]] 与 [[unlikely]] | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/likely-unlikely-attributes.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/likely-unlikely-attributes.zh/</guid><pubDate>2026-10-13</pubDate><description>C++20 引入了 [[likely]] 和 [[unlikely]] 这两个可能性属性，它们会给编译器优化提示，表示对应代码路径可能/不可能被执行。</description></item>
<item><title>C++20 新特性导读 | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/embrace-cpp20.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/embrace-cpp20.zh/</guid><pubDate>2026-10-13</pubDate><description>接下来本篇将会简单的列一些比较重要的特性供大家参考，陈述一下为什么大家需要学习C++20，它能够给大家代码什么样的好处。</description></item>
<item><title>C++20 std::span 设计与陷阱 | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-span.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-span.zh/</guid><pubDate>2026-10-13</pubDate><description>在 C++20 中，span 是一个轻量级的、范围类型的容器，它提供了对一段连续内存的访问。span 作为一个视图（view），并不拥有其数据，而是对数据的一个简单引用，常用于替代传统的 C 风格数组或指针。</description></item>
<item><title>C++20 Ranges 库 | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-ranges.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-ranges.zh/</guid><pubDate>2026-10-13</pubDate><description>ranges是C++20的主要特性之一，其中&quot;view&quot;是比较重要的一部分。C++20之前，标准库的算法实现是基于迭代器来实现的，例如：std::sort。</description></item>
<item><title>C++20 模块 Modules | C++那些事</title><link>https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-modules.zh/</link><guid isPermaLink="true">https://light-city.github.io/stories_things/modern-cpp/cpp20/cpp20-modules.zh/</guid><pubDate>2026-10-13</pubDate><description>当我们使用自己编写的头文件或者第三方库时，通常会用到#include 指令来引入库，这是大家经常使用的一种方式。这种方法，实际上是将一个源文件(头文件)的所有代码拷到另一个文件中。</description></item>
</channel>
</rss>