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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探