STL算法总结

这里对STL中常用的算法进行总结,会不断更新
  1. unique:
          去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序。 它并没有将重复的元素删除,而是把重复的元素放到数组的最后面。 对于长度为n数组a,unique(a,a+n) - a返回的是去重后的数组长度。(头文件algorithm)
  1. unique_copy:
    类似于unique,唯一的区别在于unique_copy接受第三个迭代器实参,用于指定复制不重复元素的目标序列。
    3. accumulate
          累加初始值和输入范围内所有元素的值,返回类型就是其第三个实参的类型。调用该函数时必需传递一个初始值,否则,accumulate将不知道使用什么初始值。其次,容器内的元素类型必须与第三个实参的类型匹配,或者可转换为第三个实参的类型(头文件numeric
     4. find
          在一个区间中查找第一个等于查找值的元素。
     5.  search
              在一个序列中搜索与另一序列匹配的子序列。它有如下两个原型,在迭代器区间[first1, last1)上找迭代器区间[first2, last2)完全匹配(或者满足二元谓词binary_pred)子序列,返回子序列的首个元素在[first1, last1)区间的迭代器值,或返回last1表示没有匹配的子序列。
       6. search_n
                搜索序列中是否有一系列元素值均为某个给定值的子序列。 分别在迭代器区间[first, last)上搜索是否有count个连续元素,其值均等于value(或者满足谓词判断binary_pred的条件),返回子序列首元素的迭代器,或last以表示没有重复元素的子序列。
        7.   find_end
                在一个序列中搜索出最后一个与另一序列匹配的子序列。
         8.   find_first_of
                用于查找位于某个范围之内的元素。在 区间[first1, last1)上查找元素*i,使得迭代器区间[first2, last2)有某个元素*j,满足*i ==*j或满足二元谓词函数comp(*i, *j)==true的条件。元素找到则返回迭代器i,否则返回last1。
9. copy
        将一个区间的元素移至另一个区间(只给出起始位置)。
    10. remove
        将一个区间中所有值为特定值得元素移除,返回移除元素后新的结束位置。 查找第一个和指定值相当的元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素,也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会依次前移。remove并不真正删除元素,调remove后,容器中元素数目不会变化。remove使不用被删除的元素移动到容器的前端,但并不保证删除的元素移动到容器的后端。如果需要真正删除容器元素,需要结合erase-remove用法。这里,如果容器中保存的是指针,调用remove,erase组合进行删除需要特别注意。所以最好用智能指针。




     需要拍下区间的STL算法:
     binary_search,lower_bound,upper_bound,equal_range,set_union,set_intersection,set_difference,set_symmetric_difference,includes

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值