技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性

介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用

1.accumulate() 累加

2.for_each() for一段区间 做你指定的行为

3.replace(), replace_if(), replace_copy() 替换函数

4.count(), count_if() 计数

5.find() 查找

6.sort() 排序

7.binary_search()查看元素是否在指定区间


下面的仿函数都没有继承自 binary_function<T,T,bool>, unary_function<T,bool>,但是在实际操作中,声明仿函数一定要继承自binary_function<T,T,bool>,unary_function<T,bool>

下一节内容会介绍为什么要继承自这两个类


 

一 accumulate(),累加,将指定区域内的value累加起来

源码及参数介绍

//默认累加算法,将传进的__first(begin()迭代器)位置,至__last(end()迭代器),与init求和
template<typename _InputIterator, typename _Tp>
    inline _Tp
    accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
    {
      // concept requirements
      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
      __glibcxx_requires_valid_range(__first, __last);

      for (; __first != __last; ++__first)
    __init = __init + *__first;
      return __init;
    }


//自定义accumulate 按照指定的要求做”累加”操作
  template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
    inline _Tp
    accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
           _BinaryOperation __binary_op)
    {
      // concept requirements
      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
      __glibcxx_requires_valid_range(__first, __last);

      for (; __first != __last; ++__first)
    __init = __binary_op(__init, *__first);
      return __init;
    }
View Code

相关文章: