fork(2) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template<typename Iter, typename T>
  5. double mean(Iter begin, Iter end, double (T::*member))
  6. {
  7. double s = 0;
  8. size_t n = 0;
  9. while (begin != end)
  10. {
  11. s += (*begin++).*member;
  12. ++n;
  13. }
  14.  
  15. return s / n;
  16. }
  17.  
  18. struct T
  19. {
  20. double a;
  21. double b;
  22. };
  23.  
  24. int main() {
  25. std::vector<T> v = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
  26. std::cout << mean(v.begin(), v.end(), &T::a) << std::endl;
  27. std::cout << mean(v.begin(), v.end(), &T::b) << std::endl;
  28. return 0;
  29. }
Success #stdin #stdout 0.01s 5528KB
stdin
Standard input is empty
stdout
3
4