C++ STL迭代器适配器简介 本节我们将进入迭代器适配器的学习。迭代器适配器,顾名思义,就是自定义迭代器,在原有迭代器的基础上进行接口的约束或升级。如果读者还不知道什么是适配器的话,可自行跳转《C++ STL容器适配器简介》深入学习。对于SLT库中的所有容器,我们总共有5种迭代器,分别是前向迭代器、双向迭代器、随机访问迭代器、输入迭代器和输出迭代器。我们通常使用迭代器来进行容器的遍历和快速访问首尾元素,这里演示一下通过迭代器遍 STL迭代器适配器 2025年10月18日 0 点赞 0 评论 259 浏览
C++ STL 排序算法std::is_sorted()函数入门 到目前为止,我们已经把主要的排序模板函数讲完了,读者还记得有哪些吗?这里笔者通过表格向读者展示一下,希望读者对这些排序模板函数有基本掌握。函数名功能sort对指定范围内的元素进行通用、高效的排序。不保证相等元素的原始相对顺序。通常使用内省排序(快速排序+堆排序),平均和最优时间复杂度为O(N log N)。stable_sort对指定范围内的元素进行稳定排序。保证相等元素在排序后的相对顺序与其在原 C++常用算法(一) 2025年10月22日 0 点赞 0 评论 261 浏览
C++ STL 移动迭代器入门 本节我们将详细介绍移动迭代器适配器,又称之为“移动迭代器”。那么什么是移动迭代器呢?简言之,“*it”表示迭代器解引用,为左值引用,能够访问和二次赋值对象;而使用移动迭代器后,“*it”表示右值引用,直接更改元素的内部指针,实现资源转移。移动迭代器的强大之处在于高效率“移动”对象,但是需要谨慎使用,因为移动后“源对象”处于非定义状态,可能会造成程序的崩溃。为了更加详细地介绍移动迭代器,我们可以举个 STL迭代器适配器 2025年10月20日 0 点赞 0 评论 261 浏览
C++ STL比较算法std::equal()函数入门 上一节我们学习了一元谓词判断算法,读者是否还记得他们分别是什么吗?没错,它们分别是all_of()函数、any_of()函数、none_of()函数,其中all_of()函数为”全称判断“,any_of()函数为”存在判断“,none_of()函数为”全否判断“。本节我们将学习新的算法——比较算法,那什么有时比较算法呢?就像字符串比较一样,比我我们有两个字符串s1和s2:strings C++常用算法(二) 2025年10月25日 0 点赞 0 评论 262 浏览
C++ STL multimap容器入门 在掌握map容器的基础下,我们开始multimap容器的学习。为什么要求有map的基础呢,原因在于multimap与map容器十分“相似”,不同点在于map只允许存在唯一键,而multimap能够存储重复键,在理解map的基础上对比归纳这两个容器,能够对序列式容器有个宏观的视角,提高对容器的掌控力。如果读者没有map容器的基础,可跳转《初识模板类pair》开始map容器的学习。由于multimap STL有序关联式容器 2025年10月10日 0 点赞 0 评论 265 浏览
C++ STL移除算法std::unique()函数入门 前面一节我们学习了复制算法 reverse_copy() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够将序列元素反转顺序后复制到目标区域。本节我们将学习一个新的算法,移除算法,顾名思义,该算法的功能是移除序列中不符合条件的元素,注意是移除而不是删除,实际上是覆盖。unique() 函数就是一个移除算法,"unique" 意为"唯一的",但读者千万别 C++常用算法(二) 2025年10月26日 0 点赞 0 评论 265 浏览
C++ STL填充算法std::fill()函数入门 前面一节我们学习了区间交换算法remove()函数等移除算法,读者是否还记得它们的功能分别是什么吗?没错,remove()函数能够移除与目标元素完全相等的元素,如果想要自定义比较规则可使用remove_if()函数,需要将与目标元素不等的元素复制到另外一个容器可以使用remove_copy()函数,如果既要定义比较规则又要复制不等元素那就使用remove_copy_if()函数。本节我们将学习一个 C++常用算法(二) 2025年10月27日 0 点赞 0 评论 268 浏览
深度剖析C++ STL map容器emplace()和emplace_hint()高效插入元素的底层机制 前面我们通过实验知道单个插入emplace()效率最高,批量插入emplace_hint()效率最高,那为什么是这样呢?这里我们简单构造一个类obj,然后通过map去调用它,分别查看各个插入函数的调用情况:#include<iostream>#include<map>#include<string>using STL有序关联式容器 2025年10月08日 0 点赞 0 评论 270 浏览
深度剖析C++ STL priority_queue适配器底层的堆结构 在《C++ STL priority_queue适配器入门》我们就曾提到优先队列的底层结构是堆,具体是二叉堆,这个二叉堆可以类比二叉树进行学习。可能有读者存疑了,本章不是在学习容器适配器吗,怎么会谈到底层结构呢,这么说优先队列底层到底是堆还是vector容器还是deque容器呢?其实,结构和容器是两个完全不同的概念,但是它们可以组合在一起!就适配容器而言,优先队列采用vector容器或deque容 STL容器适配器 2025年10月18日 2 点赞 0 评论 271 浏览