fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. template <typename T, typename M>
  6. M membersum(vector<T> array, M (T::*mptr)) {
  7. M sum = 0;
  8. for (int i=0; i<array.size(); i++) {
  9. sum += (array[i].*mptr);
  10. }
  11. return sum;
  12. }
  13.  
  14. struct Point {
  15. Point(int x, int y, float z): x(x), y(y), z(z) {}
  16. int x;
  17. int y;
  18. float z;
  19. };
  20.  
  21. int main() {
  22. vector<Point> points;
  23. points.push_back(Point(1,2,3.8));
  24. points.push_back(Point(1,2,4.5));
  25. points.push_back(Point(1,2,1.7));
  26. // your code goes here
  27. cout << "sum x: " << membersum(points, &Point::x) << endl;
  28. cout << "sum y: " << membersum(points, &Point::y) << endl;
  29. cout << "sum z: " << membersum(points, &Point::z) << endl;
  30. return 0;
  31. }
Success #stdin #stdout 0s 3232KB
stdin
Standard input is empty
stdout
sum x: 3
sum y: 6
sum z: 10