能够通用于各种容器的算法。

算法的一切都是基于容器通用的迭代器与容器元素类型的自己的函数来进行的。因此能够泛化。因此,不管容器为何,算法都是能用的。但是由于只使用迭代器,算法并不能改变底层容器的大小,虽然有可以插入元素的迭代器存在。

只读算法

最好使用cbegin()与cend()

  1. find(begin,end,val)

  2. find_if(begin,end,predicate)

    对于元素调用谓词,若谓词返回为非0值则算成功。

  3. accumulate(begin,end,初始值)

    虽然允许元素与初值的类型不同,但是必须得能够相加才行。

  4. equal(begin1,end1,begin2)

    对于三参数迭代器参数都需要保证第二个容器的大小大于等于第一个,因为其并不会检查当前访问元素是否存在,而是直接访问,因此会访问不存在的元素,产生报错。

写元素算法

需保证原大小大于写入新序列的大小。

  1. fill(begin,end,val)

  2. fill(begin,num,val)

    需要保证num小于等于begin到容器末尾的距离

  3. replace(begin,end,originalnum,replacenum)

插入迭代器?

可以使用back_inserter(容器)来获取容器对应的插入迭代器。

给插入迭代器赋值会将所赋的值作为一个新的元素插入其中。相当于调用push_back()。

可以用于算法中。

fill_n(back_inserter(vector),num,val)

拷贝

copy(begin,end,target’sbegin)