fork download
  1. #include <iostream>
  2. #include <type_traits>
  3. #include <vector>
  4. #include <map>
  5. using namespace std;
  6.  
  7. template<typename T>
  8. auto sum(const T& t, size_t n)
  9. {
  10. std::remove_const_t<std::remove_reference_t<decltype(*begin(T{}))>> result{};
  11. size_t i = 0;
  12. for (auto&& x : t)
  13. {
  14. if (i++ >= n) break;
  15. result += x;
  16. }
  17. return result;
  18. }
  19.  
  20. template<typename K, typename V>
  21. auto sum(const std::map<K, V>& t, size_t n)
  22. {
  23. V result{};
  24. size_t i = 0;
  25. for (auto&& x : t)
  26. {
  27. if (i++ >= n) break;
  28. result += x.second;
  29. }
  30. return result;
  31. }
  32.  
  33. int main() {
  34. vector<int> ints = {1, 2, 3, 4};
  35. cout << sum(ints, 2) << "\n";
  36. vector<string> strings = {"ala", " ", "ma ", "kota" };
  37. cout << sum(strings, 3) << "\n";
  38.  
  39. map<string, int> pairs = {{"1", 1}, {"2", 2}};
  40. cout << sum(pairs, 2) << "\n";
  41. return 0;
  42. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
3
ala ma 
3