1. 简述
C++ STL库中的算法组件提供了大量用于操作序列的算法函数。这些函数通常以迭代器范围为操作对象,可以非常方便地对容器中的元素进行各种操作,而不需要写循环。下面我会详细介绍几个常用的算法函数,特别是accumulate,并提供相应的例程。
本文将简单介绍std::accumulate、std::sort、std::find、std::count、std::partial_sum等函数,并给出其使用例程。
2. std::accumulate
从字面意义上看,std::accumulate是做一个“积累”的操作。但需要注意的是,std::accumulate是对一个序列进行操作,但不仅限于“求和”,可以是序列里数依次相乘等。具体执行哪些操作,可以由函数原型中的“二元操作符”参数来指定,如果不指定,默认为序列求和。
std::accumulate是一个用于计算给定范围内所有元素累积和的算法。它接受四个参数:起始迭代器、终止迭代器、初始值和一个二元操作符。默认情况下,二元操作符是加法,但可以自定义。
函数原型如下。
template<class InputIterator, class T>
T accumulate(InputIterator first, InputIterator last, T init);
template<class InputIterator, class T, class BinaryOp>
T accumulate(InputIterator first, InputIterator last, T init, BinaryOp op);
其中:
first, last:输入迭代器的范围,表示要操作的