C++ STL标准模板库在数据结构和算法的实践领域发挥着重要作用,极大的提高了开发效率。STL的三大组成部分为容器、迭代器、算法,本文主要讲解STL算法中的非变易算法。本文从实践的角度简单介绍了一下相关函数的使用。
C++ STL的非变易算法(Non-mutating algorithms)是一组不破坏函数数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配,基本上可用于各种容器。下面的叙述中迭代器区间默认为[first, last),迭代器具有“++”迭代和“*”访问操作。
逐个处理算法
for_each函数
该函数对迭代器区间的每个元素,执行单参数函数对象定义的操作。
下面的实例程序,将打印容器vector中的每个元素。
结果输出为:
元素查找算法
find函数
该函数用于查找等于某值的元素。如果迭代器i所指的元素满足*i == value,则返回迭代器i。未找到满足条件的元素,返回last。只要找到第一个满足条件的元素就返回迭代器位置,不再继续查找。
下面的示例程序查找容器vector中,第一个值为6的元素,打印元素位置及其前一元素。
结果输出为:
find_if函数
该函数是find的一个谓词判断版本,查找满足谓词判断函数的元素。
下面的实例程序将寻找容器vector中第一个能被3整除的元素。
结果输出为:
adjacent_find函数
该函数用于查找相等或满足条件的邻近元素对。它有两个使用原型,一个用于查找相等的两个连续元素,另一个使用二元谓词判断,查找满足条件的邻近元素对。
下面的实例程序用于寻找容器中相等的元素和奇偶性相同的元素。
输出结果为:
find_first_of函数
该函数用于查找某个范围之内的元素。它有两个使用原型,一个是相等,另一个是二元谓词判断。元素找到则返回迭代器,否则返回末位置。
下面的实例程序用于计算容器v2中元素在容器v中重合出现的首位置。
#include