fork download
  1. #include <numeric>
  2. #include <vector>
  3. #include <list>
  4. #include <array>
  5. #include <iostream>
  6. #include <iterator>
  7.  
  8. using namespace std;
  9.  
  10. template<typename C>
  11. auto avg_impl(const C & xs) {
  12. using T = decltype(*begin(xs));
  13. auto s = accumulate(begin(xs), end(xs), make_pair(T{}, 0u),
  14. [](auto p, auto x) {
  15. return make_pair(p.first+x, p.second+1u);
  16. });
  17. return s.first/s.second;
  18. }
  19.  
  20. int main() {
  21. vector<int> vi{ 0, -5 };
  22. cout << "vi avg: " << avg_impl(vi) << endl;
  23. }
  24.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
vi avg: 2147483645