fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <functional>
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. template <typename A, typename B>
  9. auto map( const A & source, const B & b )
  10. -> std::vector< decltype( b(*source.begin()) ) >
  11. {
  12. auto result = std::vector< decltype( b(*source.begin()) ) >();
  13. for( auto & element: source)
  14. {
  15. result.push_back( b(element) );
  16. }
  17. return result;
  18. }
  19.  
  20. float convert( int num )
  21. {
  22. return num;
  23. }
  24.  
  25. int main() {
  26.  
  27. std::vector<int> ints = {1,2,3,4,5};
  28. std::set<int> int_set = {7,8,9};
  29. std::vector<float> floats = map( ints, []( int v) -> float { return v;} );
  30. std::vector<float> floats2 = map( int_set, []( int v) -> float { return v;} );
  31. for( auto & n: floats)
  32. {
  33. std::cout << n << std::endl;
  34. }
  35.  
  36. std::cout << "---" << std::endl;
  37. for( auto & n: floats2)
  38. {
  39. std::cout << n << std::endl;
  40. }
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 5584KB
stdin
Standard input is empty
stdout
1
2
3
4
5
---
7
8
9