C++ STL容器简介 STL容器是C++标准模板库中用于存储和管理数据集合的通用数据结构模板类。可以把它们想象成各种规格的“智能储物箱”,每个箱子都有自己独特的存放和取用规则。这些容器大大简化了程序员的数据管理工作量——不需要从零开始实现链表、栈、队列这些基础数据结构,而是直接使用现成的模板类。比如vector就像可以自动扩容的动态数组,list如同可以高效插入删除的双向链表,map则提供了键值对的快速查找能力。所有S STL序列式容器 2025年10月01日 1 点赞 0 评论 363 浏览
C++ STL迭代器适配器简介 本节我们将进入迭代器适配器的学习。迭代器适配器,顾名思义,就是自定义迭代器,在原有迭代器的基础上进行接口的约束或升级。如果读者还不知道什么是适配器的话,可自行跳转《C++ STL容器适配器简介》深入学习。对于SLT库中的所有容器,我们总共有5种迭代器,分别是前向迭代器、双向迭代器、随机访问迭代器、输入迭代器和输出迭代器。我们通常使用迭代器来进行容器的遍历和快速访问首尾元素,这里演示一下通过迭代器遍 STL迭代器适配器 2025年10月18日 0 点赞 0 评论 259 浏览
C++ STL set容器入门 对于SLT库中的关联式容器,我们第一个学到的容器就是map,它属于有序关联式容器且只允许唯一键值存在;当允许重复键值存在时,我们就学习了multimap。今天我们开始学习set容器,set可以被视为是特殊的map,它要求键必须等于值。所以,插入时只需要放入一个元素即可,可见“键值对”的概念被隐式转换了。set最大的特点是能够自动去重和排序,其底层是红黑树实现,时间复杂度为O(log n),相比动态 STL有序关联式容器 2025年10月10日 0 点赞 0 评论 281 浏览
深度剖析C++ STL vector容器的底层构造 学习了这么久的vector,想必读者对vector的底层原理一定充满好奇,为了满足读者的求知欲,本节将带领读者深入vector的学习,探寻其底层实现的奥秘。vector被称为动态数组,普通数组的promax版,动态扩展这一特性使得它与普通数组走上了截然不同的命运。下面我将提供其底层源码的一部分,有理有据地深入了解vector。template<typename_Tp, STL序列式容器 2025年10月02日 0 点赞 0 评论 326 浏览
C++ STL复制算法std::copy_if()函数入门 前面一节我们学习了复制算法copy_n()函数,读者是否还记得它的功能是什么吗?没错,该函数能够从指定位置开始复制固定数量的元素到目标区域。本节我们将学习一个更智能的复制算法——条件复制算法copy_if()函数。从名称就能看出,这个函数在复制时会进行条件筛选,只复制满足特定条件的元素。copy_if()函数的语法格式如下:template<classInputIt, C++常用算法(二) 2025年10月26日 0 点赞 0 评论 207 浏览
C++ STL 排序算法std::nth_element()函数入门 nth_element(beg , pos , end)排序算法模板函数,”nth“意为”第几个“,该排序算法指的是在指定区间[beg , end)按排序规则找出位置在pos上的元素是谁并进行填充,此函数会打乱原有序列。使用nth_element(beg ,pos , end)时需要包含头文件<algorithm>。使用nth_element(beg ,pos C++常用算法(一) 2025年10月21日 2 点赞 0 评论 287 浏览
深度剖析C++ STL无序关联式容器的底层构造 C++ STL无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unordered_multiset容器,其底层构造都是基于哈希表封装的。如果读者还不具备哈希基础的话可自行跳转《哈希算法实例详解》学习。简单来说,无序关联式容器可以看作指针数组+链表的奇妙组合。原理可理解为:我们向堆区开辟了一段连续空间(可理解为数组),空间大小 STL无序关联式容器 2025年10月14日 0 点赞 0 评论 277 浏览
深入学习C++ STL list容器的迭代器 和其他容器一样,在学会创建容器后我们就要认识其迭代器。list同我们学过的vector一样,也有begin()、end()正向迭代器,rbegin()、rend()反向迭代器,更有可读不可改的cbegin()、cend()、crbegin()、crend()这种常量迭代器(c这里表示const,意为不可修改)。他们在链表中的位置如下图所示:list和之前学过的deque、vector、array一 STL序列式容器 2025年10月05日 0 点赞 0 评论 315 浏览
浅谈C++ STL的发展史 1. 思想起源与早期探索(1970s - 1980s) STL 的核心理念源于其创始人 Alexander Stepanov 的长期思考:能否将算法从具体应用中抽象出来,且不损失运行效率?在莫斯科大学攻读数学后,Stepanov 与 David Musser 等人合作,先后使用 Tecton、Schema 和 Ada 语言进行泛型库 STL基础 2025年10月01日 2 点赞 0 评论 339 浏览