STL(二十二)变易算法

来源:互联网 发布:淘宝镜子自拍模特技巧 编辑:程序博客网 时间:2024/05/19 03:23

     变易算法是一组能够修改容器元素数据的模板函数,可进行序列数据的复制、交换、替换、填充、移除、旋转、随机抖动和分别。这些算法对迭代器有较高的要求,具体的迭代器类型随各个算法而定,或前向迭代器 、或双向迭代器、又或者是随机迭代器,以提供算法所需要的迭代器操作。应用变易算法时,先要检查容器的迭代器是否符合要求,防止产生编译错误。

一、元素复制copy

#include <stl_algobase.h>

template <class InputIter, class OutputIter, class Distance>

inline  OutputIter copy(InputIter first, InputIter last, OutputIter result, input_iterator_tag, Distance*) {

    for (; first != last; ++result, ++first)

        *result = *first;

    return result;

}

二、反向复制copy_backward

     将一个迭代器区间元素复制到另一迭代器区间上,只是复制过程是从最后的元素开始复制,直到首元素复制出来。

三、元素交换swap

template <class T>

inline void swap(T& a, T& b) {

    T tmp = a;

    a = b;

    b = tmp;

}

四、迭代器交换iter_swap


五、区间元素交换swap_ranges

用于进行两个迭代器区间元素的交换

六、元素变换transform

用于实行容器元素的变换操作

七、替换replace

将指定元素值替换为新值

八、条件替换replace_if

是replace算法一个带谓词判断的版本

九、替换和复制replace_copy

先进行元素替换,再将元素复制到新容器

十、条件替换和复制replace_copy_if

是replace_copy算法的一个带谓词判断的版本

十一、填充fill

将同一个值填充到容器的一个或多个元素处

十二、n次填充fill_n

可指定填充的元素个数

十三、随机生成元素generate

为容器生成新元素

十四、随机生成n个元素generate_n

限定了可填入容器的数值个数

十五、移除复制remove_copy

是一个条件复制,将原容器中不等于某个给定值的元素复制到新容器

十六、条件移除复制remove_copy_if
remove_copy算法的一个带谓词判断的版本

十七、移除remove

将容器中等于某个给定值的元素全部移除掉

十八、条件移除remove_if

remove算法的一个带谓词判断的版本

十九、不连续重复元素复制unique_copy

复制不连续重复的元素

二十、剔除连续重复元素unique

剔除容器中连续重复的元素

二十一、元素反向reverse

用于容器元素的反向排列

二十二、反向复制reverse_copy

用于反向复制容器元素

二十三、旋转rotate

用于旋转某个迭代器区间的元素

二十四、旋转复制rotate_copy

通过复制的方法实现旋转,比rotate算法更简单和高效,但需要占用较多的内存空间

二十五、随机抖动random_shuffle

对容器元素进行随机的排列

二十六、随机采样random_sample

对区间元素进行随机采样

二十七、容器分割partition

用于重新分割排列容器的元素

二十八、容器稳定分割stable_partition

重新分割排列容器的元素,但可以保持原有元素的先后顺序






















原创粉丝点击