欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++:STL常用算法

程序员文章站 2022-03-05 20:23:16
...

算法主要是由头文件<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 目标容器的最后一个元素的迭代器地址

*/