fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <utility>
  5.  
  6. struct MyIndexGenerator
  7. {
  8. int value;
  9. int index;
  10.  
  11. MyIndexGenerator(int _value, int _first = 0) : value(_value), index(_first) {}
  12.  
  13. std::pair<int, int> operator()()
  14. {
  15. return std::make_pair(value, index++);
  16. }
  17. };
  18.  
  19. class Foo
  20. {
  21. public:
  22. int x;
  23. int Index;
  24.  
  25. Foo(const std::pair<int, int> &_x) : x(_x.first), Index(_x.second) {}
  26. };
  27.  
  28. int main()
  29. {
  30. int a = 5;
  31. std::vector<Foo> Instances;
  32. Instances.reserve(30);
  33. std::generate_n(std::back_inserter(Instances), 30, MyIndexGenerator(a));
  34.  
  35. for(auto &f : Instances)
  36. std::cout << f.Index << ' ';
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29