fork download
  1. #include <vector>
  2. #include <set>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. class Container
  8. {
  9. public:
  10. Container() {}
  11. Container(int _i) : i(_i) {}
  12.  
  13. int get_i() const {return i;}
  14.  
  15. int i;
  16. };
  17.  
  18. template <
  19. class U,
  20. class V,
  21. template <typename...> class T1,
  22. template <typename...> class T2
  23. >
  24.  
  25. T2<V> WugMap(
  26. T1<U>& unmapped,
  27. V (U::*method)() const)
  28. {
  29. T2<V> collection;
  30. for (typename T1<U>::iterator i = unmapped.begin(); i != unmapped.end(); ++i)
  31. collection.insert(collection.end(), ((*i).*method)());
  32.  
  33. return collection;
  34. }
  35.  
  36. int main()
  37. {
  38. vector<Container> containers;
  39. for (int i = 0; i < 10; ++i) containers.push_back((Container(i)));
  40.  
  41. set<int> contained = WugMap<Container, int, std::vector, std::set>(containers, &Container::get_i);
  42. for (set<int>::iterator derp = contained.begin(); derp != contained.end(); ++derp) cout << *derp << " " << endl;
  43. }
Success #stdin #stdout 0s 3020KB
stdin
Standard input is empty
stdout
0 
1 
2 
3 
4 
5 
6 
7 
8 
9