#include<stdio.h>
int sum(int* begin, int* end){
int* p = begin;
int ans = 0;
for(int *p = begin; p != end; p++)
{
ans += *p;
printf("%d\n",*p);
}
printf("%d\n",*p);
return ans;
}
int main()
{
int a[10] = {1, 2, 3, 4, 5};
printf("%d\n", sum(a, a+5) );
return 0;
}
值得注意的是C++,for中定义的*p在for循环外不能使用
#include<iostream>
#include<algorithm>
using namespace std;
template<typename T>
T sum(T* begin, T* end){
T* p = begin;
T ans = 0;
for(T *p = begin; p != end; p++)
ans += *p;
return ans;
}
int main()
{
int a[10] = {1, 2, 3, 4, 5};
cout << sum(a, a+5) ;
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
struct Point {
int x,y;
Point (int x=0,int y=0):x(x),y(y){}
};
Point operator + (const Point& A, const Point& B){
return Point(A.x+B.x, A.y+B.y);
}
ostream& operator << (ostream &out, const Point& p){
out << "(" << p.x << "," << p.y << ")";
return out;
}
template<typename T>
T sum(T *begin, T *end){
T ans = 0;
for(T *p = begin; p != end; p++)
ans = *p + ans;
return ans;
}
int main()
{
double a[] = {1.1, 2.2, 3.3, 4.4};
cout << sum(a, a+4) << endl;
Point b[] = { Point(1,1), Point(2,2), Point(3,3), Point(4,4)};
cout << sum(b, b+4) << endl;
return 0;
}