c++算数生成算法

算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric>

accumulate // 计算容器元素累计总和
fill // 向容器中添加元素

accumulate
功能描述:
计算区间内 容器元素累计总和
函数原型:
accumulate(iterator beg, iterator end, value,(__binary_op));
// 计算容器元素累计总和
// beg 开始迭代器
// end 结束迭代器
// value 起始值

//__binary_op重写函数对象

stl中accumulate的实现如下,因为它的默认函数中()内为init值和一个first迭代器,所以重写时函数第一个输入为求和结果变量,第二个输入为自定义数据类型

 template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
 _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;
 }
//重写函数对象的过程
class PS{
 public:
        int operator()(int t1,const Student& t2)
        {
            return (t1 + t2.total);
        }
       
};

fill
功能描述:
向容器中填充指定的元素

函数原型:
fill(iterator beg, iterator end, value);
// 向容器中填充元素
// beg 开始迭代器
// end 结束迭代器
// value 填充的值

源码如下,没有谓词函数,本身就可以填充自定义数据,因为_Tp是typename的类型

  template<typename _ForwardIterator, typename _Tp>
    inline void
    fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
    {
      // concept requirements
      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<
          _ForwardIterator>)
      __glibcxx_requires_valid_range(__first, __last);

      std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
        __value);
    }
posted @   纸包鱼  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示