轮子的代码是学习了官网之后写的,只为熟悉。链接如下[accumulate-c++]
实现代码
- my_accumulate.h
/*************************************************************************
> File Name: my_accumulate.h
> Author: kang
> Mail:likang@tju.edu.cn
> Created Time: 2017年01月06日 星期五 10时13分45秒
************************************************************************/
#ifndef MY_ACCUMULATE_H
#define MY_ACCUMULATE_H
template<class InputIterator, class T>
T my_accumulate( InputIterator first, InputIterator last, T init )
{
while( first != last )
{
init += *first;
++first;
}
return init;
}
template<class InputIterator, class T>
T my_accumulate( InputIterator first, InputIterator last, T init, BinaryOperation binary_op )
{
while( first != last )
{
init = binary_op( init, *first );
++first;
}
return init;
}
#endif
- 测试代码
/*************************************************************************
> File Name: main.cpp
> Author: kang
> Mail:likang@tju.edu.cn
> Created Time: 2017年01月06日 星期五 10时17分05秒
************************************************************************/
#include "my_accumulate.h"
#include <vector>
#include <iostream>
int main( void )
{
const int arr[] = {1,2,3,4,5,6,7,8};
std::vector<int> v( arr, arr + 8 );
int res = 0;
res = my_accumulate( v.begin(), v.end(), res );
std::cout << "res = " << res << std::endl;
return 0;
}