c++:STL常用算法

算法主要是由头文件<algorithm> <functional> <numeric>组成。

<algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等...

<numeric>体积很小,只包括在几个序列容器上进行的简单运算的模板函数.

<functional> 定义了一些模板类,用以声明函数对象。


目录

 一、常用遍历算法

二、常用查找算法

三、常用排序算法

四、常用拷贝和替换算法

五、常用算数生成算法

六、常用集合算法


 

 

 一、常用遍历算法

  • for_each(iterator beg, iterator end, _callback)

/*

    遍历容器元素

    @param beg 开始迭代器

    @param end 结束迭代器

    @param _callback  函数回调或者函数对象

    @return 函数对象

*/

 

  • transform(iterator beg1, iterator end1, iterator beg2, _callbakc)

/*

    将指定容器区间元素搬运到另一容器中

    注意 : transform 不会给目标容器分配内存,所以需要我们提前分配好内存,并且设置好大小(resize)

    @param beg1 源容器开始迭代器

    @param end1 源容器结束迭代器

    @param beg2 目标容器开始迭代器

    @param _cakkback 回调函数或者函数对象

    @return 返回目标容器迭代器

*/

 

 

二、常用查找算法

  • find(iterator beg, iterator end, value)

/*

    find算法 查找元素

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param value 查找的元素

    @return 返回查找元素的位置的迭代器

*/

 

  • find_if(iterator beg, iterator end, _callback);

/*

    find_if算法 条件查找

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param  callback 回调函数或者谓词(返回bool类型的函数对象)

    @return bool 查找返回true 否则false

*/

 

  • adjacent_find(iterator beg, iterator end, _callback);

/*

    adjacent_find算法 查找相邻重复元素

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param  _callback 回调函数或者谓词(返回bool类型的函数对象)

    @return 返回相邻元素的第一个位置的迭代器

*/

 

  • bool binary_search(iterator beg, iterator end, value);

/*

    binary_search算法 二分查找法

    注意: 在无序序列中不可用

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param value 查找的元素

    @return bool 查找返回true 否则false

*/

 

  • count(iterator beg, iterator end, value);

/*

    count算法 统计元素出现次数

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param  value回调函数或者谓词(返回bool类型的函数对象)

    @return int返回元素个数

*/

 

  • count_if(iterator beg, iterator end, _callback);

/*

    count_if算法 统计元素出现次数

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param  callback 回调函数或者谓词(返回bool类型的函数对象)

    @return int返回元素个数

*/

 

 

三、常用排序算法

  • merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    merge算法 容器元素合并,并存储到另一容器中

    注意:两个容器必须是有序的

    @param beg1 容器1开始迭代器

    @param end1 容器1结束迭代器

    @param beg2 容器2开始迭代器

    @param end2 容器2结束迭代器

    @param dest  目标容器开始迭代器(要先resize)

*/

 

  • sort(iterator beg, iterator end, _callback)

/*

    sort算法 容器元素排序

    @param beg 容器1开始迭代器

    @param end 容器1结束迭代器

    @param _callback 回调函数或者谓词(返回bool类型的函数对象)

*/

 

  • random_shuffle(iterator beg, iterator end)

/*

    random_shuffle算法 对指定范围内的元素随机调整次序

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

     随机数种子:srand( (unsigned int)time(NULL))

*/

 

  • reverse(iterator beg, iterator end)

/*

    reverse算法 反转指定范围的元素

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

*/

 

 

四、常用拷贝和替换算法

  • copy(iterator beg, iterator end, iterator dest)

/*

    copy算法 将容器内指定范围的元素拷贝到另一容器中

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param dest 目标起始迭代器

*/

  • replace(iterator beg, iterator end, oldvalue, newvalue)

/*

    replace算法 将容器内指定范围的旧元素修改为新元素

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param oldvalue 旧元素

    @param newvalue 新元素

*/

 

  • replace_if(iterator beg, iterator end, _callback, newvalue)

/*

    replace_if算法 满足callback函数回调或者谓词条件的元素,变为新元素newvalue

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param callback函数回调或者谓词(返回Bool类型的函数对象)

    @param newvalue 新元素

*/

  • swap(container c1, container c2)

/*

    swap算法 互换两个容器的元素

    @param c1容器1

    @param c2容器2

*/

 

五、常用算数生成算法

#include <numeric> //accumulate头文件
  • accumulate(iterator beg, iterator end, value)

/*

    accumulate算法 计算容器元素累计总和

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param value起始累加值

*/

 

  • fill(iterator beg, iterator end, value)

/*

    fill算法 向容器中添加元素

    @param beg 容器开始迭代器

    @param end 容器结束迭代器

    @param value t填充元素

*/

 

 

六、常用集合算法

  • set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_intersection算法 求两个set集合的交集

    注意:两个集合必须是有序序列

    @param beg1 容器1开始迭代器

    @param end1 容器1结束迭代器

    @param beg2 容器2开始迭代器

    @param end2 容器2结束迭代器

    @param dest  目标容器开始迭代器

    @return 目标容器的最后一个元素的迭代器地址

*/

 

  • set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_union算法 求两个set集合的并集

    注意:两个集合必须是有序序列

    @param beg1 容器1开始迭代器

    @param end1 容器1结束迭代器

    @param beg2 容器2开始迭代器

    @param end2 容器2结束迭代器

    @param dest  目标容器开始迭代器

    @return 目标容器的最后一个元素的迭代器地址

*/

 

  • set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

/*

    set_difference算法 求两个set集合的差集

    注意:两个集合必须是有序序列

    @param beg1 容器1开始迭代器

    @param end1 容器1结束迭代器

    @param beg2 容器2开始迭代器

    @param end2 容器2结束迭代器

    @param dest  目标容器开始迭代器

    @return 目标容器的最后一个元素的迭代器地址

*/

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章