本文主要介绍STL中的基本算法,主要涉及到的源码文件有 stl_algobase.h 等。
在 stl_algobase.h 中定义的算法都比较简单基础,主要涉及区间相等判断、区间填充、求极值、交换、拷贝、字典序比较等算法,而其他诸如查找、计数、排序、旋转等算法则在文件 stl_algo.h 中实现。在algobase基本算法中,除了字典序比较、复制/拷贝算法外,其他都比较简单,这里先依次介绍这些简单的算法,然后再介绍字典序比较和拷贝算法。
1. 交换、填充等简单算法
由于这里很多算法比较简单(基本都在10行以内,甚至很多就一行代码),就不一一粘贴代码了。
iter_swap :将两个 ForwardIterators 所指的对象对调,通过申请一个临时变量、三次赋值,就完成了。
min/max :求两个数中的小、大者,还有一个版本可以指定的比较方法(仿函数)。
fill :将 [first, last) 内的所有元素改填为新值 value。
fill_n :将 [first, last) 内的前n个元素改填为新值 value,返回迭代器指向被填入的最后一个元素的下一位置。
mismatch :用来平行比较两个序列,指出两者之间的第一个不匹配点,返回一对迭代器(Iterators Pair),分别指向两序列中的不匹配点。
equal :判断两个序列在 [first, last) 区间内相等,如果第二个序列元素较多,将不予考虑,只有两个序列在各自区间内对应相等才返回true,否则返回false。