STL

C++ STL unordered_multimap容器入门

在掌握unordered_map容器的基础下,我们开始unordered_multimap容器的学习。为什么要求有unordered_map容器的基础呢,原因在于unordered_multimap容器与unordered_map容器十分“相似”,不同点在于unordered_map容器只允许存在唯一键,而unordered_multimap容器能够存储重复键,在理解unordered_map容器

C++ STL排列组合算法std::prev_permutation()函数入门

前面一节我们学习了排列组合算法——next_permutation()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列按照字典序重新排列成下一个更大的组合。本节我们将学习它的对称函数——prev_permutation()函数。"prev"表示"前一个","permutation"表示"置换",这里prev

C++ STL unordered_multiset容器入门

本节我们将进行unordered_multiset容器学习。对比前面我们学过的unordered_set容器,unordered_multiset容器的“特殊之处”在于允许出现重复值,也就是说unordered_multiset容器将“退化”成普通数组,由于其内的元素被哈希函数映射到桶数组里,所以还保持“无序”性,有别于普通数组。unordered_

C++ STL工具函数std::move()函数入门

前面一节我们学习了旋转复制算法 rotate_copy() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够在保持原序列不变的前提下生成旋转后的副本。本节我们将学习一个工具算法——move() 函数。"move" 意为"移动",从名称就能看出,这个函数用于将元素从一个位置移动到另一个位置,主要应用于批量高效移动复杂对象。move() 函数的语法格式如下

C++ STL谓词判断算法std::all_of()函数入门

本节我们开始谓词判断算法的学习。那什么是谓词判断算法呢?首先我们要知道什么是查询算法,它指的是一类只能进行查询而不能修改元素的算法,其中,谓词判断算法是查询算法的一个子集,它们的功能是判断一个区间是否满足一元谓词的要求,满足则返回true,不满足则返回false。比如我们有一个序列{1,2,3,5,7,9},该序列很多元素都是奇数,我们想要知道这个序列是不是完全奇数序列,此时我们使用all_of(

C++ STL 迭代器辅助函数prev(it , n)和next(it , n)入门

本节我们将继续进行迭代器函数的学习,由于next(it , n)和prev(it , n)功能上极为”相似“,所以笔者进行统一讲解。这里it参数指的是迭代器,n可为'+'、'-',需要根据容器进行选择(比如你总不会使用forward_list容器来进行后退操作),函数会返回将'it'进行'n'次移动操作后的迭代器。具体通过代码来展示:

C++ STL旋转算法std::rotate_copy()函数入门

前面一节我们学习了旋转算法 rotate() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够对序列进行原地循环移位操作,该操作会物理破坏原序列完整性,如果你不想这样,读者推荐使用rotate_copy()函数。那什么是rotate_copy() 函数呢?"rotate" 意为"旋转","copy" 意为"复制"

C++ STL序列查找算法std::search_n()函数入门

上一节我们学习了序列查找算法search()函数,本节我们将继续学习序列查找算法——search_n()函数。我们知道,search()函数的功能是找寻主序列里第一次出现子序列的位置,那么这个search_n()函数到底有什么功能呢?“n”有“几个的意思”,search_n()函数的功能是在一个主序列中找寻第一次出现的n个连续且相等元素,类比search()函数的话就相当于是子序列变成了常量序列(

C++ STL容器适配器简介

什么是容器适配器?首先我们需要知道,容器适配器并不属于STL容器,因为它是在已有容器的基础上进行自主设计的。就像笔记本的电源适配器,把220V的电压转化为12-20V不等的电压供笔记本使用;就像读者出国旅游,如果外语不算很流利通过翻译软件跟外国人聊天一样,翻译软件就充当这个适配器的功能。适配器简单来说就是把已有的东西添加一些功能或限制一些接口一样,实现满足需求的目的。在掌握STL容器的基础下,我们

C++ STL 流缓冲区迭代器入门

上一节我们学习了流迭代器,本节我们继续深入学习流对象的缓冲区迭代器——分别是istreambuf_iterator(从缓冲区读取字符)和ostreambuf_iterator(向缓冲区写入字符)。由于缓冲区读取数据要比流对象快,所以流缓冲区迭代器的操作效率要比流迭代器高。但在需要类型转换和数据验证的场景中,流迭代器提供了更好的安全性和便利性,读者需要明晰两者之间的区别。它们的使用方式十分“相似&q