fork(1) download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4. #include <set>
  5. #include <string>
  6.  
  7. struct Person {
  8. int age;
  9. std::string name;
  10. };
  11.  
  12. class PersonProxy {
  13. public:
  14. PersonProxy(Person& p)
  15. : person(&p) {}
  16. PersonProxy(Person* p)
  17. : person(p) {}
  18.  
  19. Person& operator*() { return *person; }
  20. Person* operator->() { return person; }
  21.  
  22. private:
  23. Person* person;
  24. };
  25.  
  26. int main()
  27. {
  28. std::vector<Person> p1;
  29. p1.push_back(Person{42, "Bob"});
  30.  
  31. Person bill{30, "Bill"};
  32. std::set<Person*> p2;
  33. p2.insert(&bill);
  34.  
  35. std::vector<int> data;
  36.  
  37. auto the_lambda = [](PersonProxy pp) {return pp->age;};
  38.  
  39. std::transform(p1.begin(), p1.end(), std::back_inserter(data), the_lambda);
  40. std::transform(p2.begin(), p2.end(), std::back_inserter(data), the_lambda);
  41.  
  42. for (int age : data)
  43. {
  44. std::cout << age << "\n";
  45. }
  46.  
  47. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
42
30