技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性
介绍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; }