fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <numeric>
  4. #include <vector>
  5.  
  6. template<typename Container, typename Transform>
  7. void transform_container(Container & container, Transform transform) {
  8. std::transform(std::begin(container), std::end(container),
  9. std::begin(container), /* requires output iterator */
  10. transform);
  11. }
  12.  
  13. template<typename T, typename Container>
  14. auto inner_product_self(Container&& container, T initial) {
  15. return std::inner_product(std::begin(container), std::end(container),
  16. std::begin(container),
  17. initial);
  18. }
  19.  
  20.  
  21. int main() {
  22. std::vector<int> v(2);
  23. std::iota(std::begin(v), std::end(v), 0);
  24.  
  25. transform_container(v, [](auto i) { return i + 2; });
  26. transform_container(v, [](auto i) { return i * 3; });
  27.  
  28. auto result = inner_product_self(v, 0);
  29.  
  30. std::cout << "result: " << result;
  31. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
result: 117