STL中常用的一些算法函数[持续更新]

1 merge 归并 将两个数组合并成一个(有序) 

        merge(iarray1,iarray+len1,iarray2,iarray2+len2,result); 升序

        merge(iarray1,iarray+len1,iarray2,iarray2+len2,result,greater<int>()); 降序

2  reverse 元素反向

       reverse(iarray,iarray+len1);

3 reverse_copy 元素反向复制

       reverse(iarray,iarray+len,iarray_new);  复制到新的数组中

3 unique 剔除连续重复元素     ,剔除后元素的个数并不会减少,只是,后面的元素复制过来覆盖前面被剔除的(#add 此算法作用没太明白,待解决),如下面的例子

      如果之前是 {1 ,2,3,3,4,4,5,6,6,8}

      result=unique(v.begin(),v.end()) ;  //#add 如果是数组记得要"越界"一下,比如int a[3]; 则要unique(&a[0],&a[3]);因为a[3]才相当于end迭代器。

      for_each(v.begin(),v.end(),print);  打印出来将是{1,2,3,4,5,6,8,6,6,8}  后面的元素依旧会存在

      for_each(v.begin(),result,print)     打印出来将是{1,2,3,4,5,6,8}

4 最小元素 min_element  返回[first,last) 中最小的元素

5 最大元素 max_element 返回[first,last) 中最大的元素

6 for_each(v.begin(),v.end(),print)      [v.begin(),v.end()) 里的每一个元素 都执行一次 print函数

7 查找容器元素  find

     在迭代器区间[first,last)之间查找 元素值等于 value的  如果找到则返回 迭代器i 否则返回 last

     result=find(v.begin(),v.end(),value);

8 条件查找容器元素  find_if

     检查区间的每一个元素,如果满足谓词 pred(*i)==true 则返回 i;

     find_if(v.begin(),v.end(),pred)  pred为谓词判断函数

9 统计等于某值的容器元素个数 count

    num=count(v.begin(),v.end(),value)  返回  等于value的个数

10条件统计容器元素个数  count_if

     num=count_if(v.begin(),v.end(),pred)  返回满足 谓词pred判断的个数

11子序列搜索 search   若找到,则返回迭代器的值,否则返回last

     iterLocation=search(first1,last1,first2,last2)

12区间元素交换 swap_rangs

     swap_rangs(first1,last1,first2)   只要知道第二个的首地址就OK了,

13替换 replace

     replace(first,last,oldvalue,newvalue)

14条件替换 replace_if

     replace_if(first,last,odd,new)  odd 条件替换函数

15移除 remove

     result=remove(first,last,value)  为什么要返回迭代器result呢,因为实际上只是将不等于value的元素复制到了[first,result)区间

                                                       而 [result,last)区间的元素依然不变

16条件移除 remove_if

        同上,只是加了一个谓词判断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值