STL—常用算法

概述:
        1、算法主要由头文件<algorithm>、<functional>、<numeric>组成
        2、<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等
        3、<functional>定义了一些模板类,用以声明函数对象
        4、<numeric>体积很小,只包含几个在序列上面进行简单数学运算的模板函数
 
1、常用遍历算法
        算法简介:
                    for_each     //遍历容器、最常用的遍历算法
                    transform   //搬运容器到另一个容器
        1.1 for_each
                功能描述:实现遍历容器
                函数原型:for_each(iterator  beg,  iterator   end,_func);
                                //遍历算法  遍历容器元素
                                //beg 开始迭代器
                                //end 结束迭代器
                                //_func 函数或者函数对象
        1.2 transfrom
                功能描述:搬运容器到另一个容器
                函数原型:transfrom(iterator  beg1,  iterator   end1,iterator  beg2,_func);
                                //beg1 源容器开始迭代器
                                //end1 源容器结束迭代器
                                //beg2 目标容器开始迭代器
                                //_func 函数或者函数对象
 
2、常用的查找算法
        算法简介:
                    find                     //查找元素
                    find_if                 //按条件查找
                    adjacent_find     //查找相邻重复元素
                    binary_search      //二分查找
                    count                   //统计元素个数
                    count_if                //按条件统计元素个数
                   
        2.1 find
                功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end();
                函数原型:find( iterator  beg,iterator end,value);
                                //查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器位置
                                //beg 开始迭代器
                                //end  结束迭代器
                                //value 查找元素
 
        2.2 find_if
                功能描述:按条件查找元素
                函数原型:find_if( iterator  beg,iterator end,_Pred);
                                //按值查找元素,找到返回指定元素的迭代器,找不到返回结束迭代器位置
                                //beg 开始迭代器
                                //end  结束迭代器
                                //_Pred 函数或者谓词(返回bool类型的仿函数)
 
 
        2.3 adjacent_find
                功能描述:查找相邻重复的元素
                函数原型:adjacent_find( iterator  beg,iterator end);
                                //查找相邻重复元素,返回相邻元素的第一个位置的迭代器
                                //beg 开始迭代器
                                //end  结束迭代器
                     
        2.4 binary_search
                功能描述:查找指定的元素是否存在
                函数原型:bool  binary_search( iterator  beg,iterator end,value);
                                //查找指定元素,查到返回true ,否则false
                                //beg 开始迭代器
                                //end  结束迭代器
                                //value 查找的元素
 
        2.5 count
                功能描述:统计元素个数
                函数原型:count( iterator  beg,iterator end,value);
                                //统计元素个数出现次数
                                //beg 开始迭代器
                                //end  结束迭代器
                                //value 统计的元素
 
        2.6 count_if
                功能描述:按条件统计元素个数
                函数原型:count_if( iterator  beg,iterator end,_Pred);
                                //按条件统计元素个数出现次数
                                //beg 开始迭代器
                                //end  结束迭代器
                                //_Pred 谓词
 
3、常用的排序算法
        算法简介:
                    sort      //对容器内元素进行排序
                    random_shuffle      //洗牌   指定范围内的元素随机调整次序
                    merge                  //容器元素合并,并存储到另一个容器中
                    reverse                 //反转指定范围的元素
 
        3.1 srot
                功能描述:对容器进行排序
                函数原型:sort(iterator beg,iterator end,_Pred)
                                //按值对容器内数据,进行升序排列
                                //beg 开始迭代器
                                //end  结束迭代器
                                //_Pred 谓词
 
        3.2 random_shuffle      
                功能描述:洗牌   指定范围内的元素随机调整次序;加随机数种子才能真实随机,srand((unsigned int )time(NULL) ), 头文件#include<ctime>
                函数原型:random_shuffle(iterator beg,iterator end)
                                //指定范围内的元素随机调整次序
                                //beg 开始迭代器
                                //end  结束迭代器
 
        3.3 merge   
                功能描述:容器元素合并,并存储到另一个容器中
                函数原型: merge(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
                                //指定范围内的元素随机调整次序
                                //beg1 容器1开始迭代器
                                //end1  容器1结束迭代器
                                //beg2 容器2开始迭代器
                                //end2  容器2结束迭代器
                                //dest  目标容器开始迭代器
 
        3.4 reverse   
                功能描述:将容器内元素进行翻转
                函数原型:reverse(iterator beg,iterator end)
                                //反转指定范围的元素
                                //beg 开始迭代器
                                //end 结束迭代器
 
4、常用拷贝和替换算法
        算法简介:
                copy        //容器内指定范围的元素拷贝到另一个容器中
                replace    //将容器内指定范围的旧元素修改为新元素
                replace_if   //容器内指定范围满足条件的元素替换为新元素
                swap      //互换两个容器的元素
 
        4.1 copy
               功能描述:容器内指定范围的元素拷贝到另一个容器中
                函数原型:copy(iterator beg,iterator end,iterator dest)
                                //容器内指定范围的元素拷贝到另一个容器中
                                //beg 开始迭代器
                                //end 结束迭代器
                                //dest 目标容器开始迭代器    
 
        4.2 replace
               功能描述:将容器内指定范围的旧元素修改为新元素
                函数原型:replace(iterator beg,iterator end,oldvalue,newvalue)
                                //将容器内指定范围的旧元素修改为新元素
                                //beg 开始迭代器
                                //end 结束迭代器
                                //oldvalue 旧元素
                                //newvalue 新元素
 
        4.3 replace_if
               功能描述:将区间内满足条件的元素,修改为新元素
                函数原型:replace_if(iterator beg,iterator end,
_pred,newvalue)
                                //按条件替换元素,满足条件的替换成指定元素
                                //beg 开始迭代器
                                //end 结束迭代器
                                //_pred 谓词
                                //newvalue 新元素
 
        4.4 swap
               功能描述:互换两个容器的元素
                函数原型:swap(container  c1,container c2)
                                //互换两个容器的元素
                                //c1 容器1
                                //c2 容器2
 
5、常用算术生成算法
        注意:算术生成算法属于小型算法,使用时包含的头文件为#include<numeric>
        算法简介:
                accumulate    //计算容器元素累计总和
                fill                //向容器中添加元素
        
        5.1 accumulate
                功能描述:计算区间内容器元素累计总和
                函数原型:accumulate(iterator beg,iterator end,value) 
                                //计算容器内累计总和
                                //beg 开始迭代器
                                //end 结束迭代器
                                //value 起始值
 
        5.2 fill
                功能描述:向容器中填充指定元素
                函数原型:fill(iterator beg,iterator end,value) 
                                //向容器中填充指定元素
                                //beg 开始迭代器
                                //end 结束迭代器
                                //value 起始值
 
6、常用集合算法
        算法简介:
                set_intersection      //求两个容器的交集
                set_union              //求两个容器的并集
                set_difference       //求两个容器的差集
 
        6.1 set_intersection
                功能描述:求两个集合的交集
                函数原型: set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
                                //求两个集合的交集
                                //注意:两个集合必须是有序序列
                                //beg1 容器1开始迭代器
                                //end1  容器1结束迭代器
                                //beg2 容器2开始迭代器
                                //end2  容器2结束迭代器
                                //dest  目标容器开始迭代器
 
        6.2 set_union
                功能描述:求两个集合的并集
                函数原型: set_union(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
                                //求两个集合的并集
                                //注意:两个集合必须是有序序列
                                //beg1 容器1开始迭代器
                                //end1  容器1结束迭代器
                                //beg2 容器2开始迭代器
                                //end2  容器2结束迭代器
                                //dest  目标容器开始迭代器
 
        6.3 set_difference
                功能描述:求两个集合的差集
                函数原型: set_difference(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
                                //求两个集合的差集
                                //注意:两个集合必须是有序序列
                                //beg1 容器1开始迭代器
                                //end1  容器1结束迭代器
                                //beg2 容器2开始迭代器
                                //end2  容器2结束迭代器
                                //dest  目标容器开始迭代器
posted @ 2020-09-30 13:12  不负华年  阅读(247)  评论(0)    收藏  举报