std::list是节点式双向链表。它不提供随机访问,却能在已知位置以常数复杂度插入、删除和转移节点,并且结构修改通常不会让其他节点的迭代器失效。
本文从list的接口与复杂度讲到哨兵节点、双向迭代器和迭代器失效,并与vector进行工程化比较。文末通过一个教学版双向链表展示节点链接、插入、删除和迭代器封装。
一、list的结构与特点std::list& ...
std::string把字符序列、动态存储、长度管理和常用字符串操作封装在一个值类型中。它比C风格字符数组更容易复制、拼接、查找和传递,但仍需正确理解size、capacity、reserve、resize、c_str以及迭代器失效等规则。
本文系统整理std::string的构造、遍历、容量、修改、查找、截取、输入和C接口兼容方式,并通过一个教学版字符串类 ...
STL将常用数据结构和算法抽象成可复用组件,使程序员不必为每个项目重复实现动态数组、链表、排序、查找等基础设施。学习STL不能只停留在背接口,更重要的是理解容器的结构、算法的复杂度、迭代器的能力以及操作后的失效规则。
本文介绍STL的定位、六大组件及协作关系,梳理常用容器的选择原则、复杂度意识、线程安全边界和分阶段学习路线,并用一个可直接编译的示例演示容器、 ...
STL 是 Standard Template Library 的缩写,即标准模板库。它以泛型编程为核心,把数据结构、遍历方式和处理算法拆分成可以自由组合的组件,使同一套算法能够处理不同容器。
学习 STL 不能只停留在记忆接口。真正重要的是理解容器特性、迭代器能力、算法前置条件、复杂度、失效规则以及六大组件之间如何协作。本文以整体知识框架为主线,对常用容器 ...
