#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
struct MyIndexGenerator
{
int value;
int index;
MyIndexGenerator(int _value, int _first = 0) : value(_value), index(_first) {}
std::pair<int, int> operator()()
{
return std::make_pair(value, index++);
}
};
class Foo
{
public:
int x;
int Index;
Foo(const std::pair<int, int> &_x) : x(_x.first), Index(_x.second) {}
};
int main()
{
int a = 5;
std::vector<Foo> Instances;
Instances.reserve(30);
std::generate_n(std::back_inserter(Instances), 30, MyIndexGenerator(a));
for(auto &f : Instances)
std::cout << f.Index << ' ';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnN0cnVjdCBNeUluZGV4R2VuZXJhdG9yCnsKICAgIGludCB2YWx1ZTsKICAgIGludCBpbmRleDsKCiAgICBNeUluZGV4R2VuZXJhdG9yKGludCBfdmFsdWUsIGludCBfZmlyc3QgPSAwKSA6IHZhbHVlKF92YWx1ZSksIGluZGV4KF9maXJzdCkge30KCiAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IG9wZXJhdG9yKCkoKQogICAgeyAKICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFsdWUsIGluZGV4KyspOwogICAgfQp9OwoKY2xhc3MgRm9vCnsKcHVibGljOgogICAgaW50IHg7CiAgICBpbnQgSW5kZXg7CgogICAgRm9vKGNvbnN0IHN0ZDo6cGFpcjxpbnQsIGludD4gJl94KSA6IHgoX3guZmlyc3QpLCBJbmRleChfeC5zZWNvbmQpIHt9IAp9OwoKaW50IG1haW4oKQp7CiAgICBpbnQgYSA9IDU7CiAgICBzdGQ6OnZlY3RvcjxGb28+IEluc3RhbmNlczsKICAgIEluc3RhbmNlcy5yZXNlcnZlKDMwKTsKICAgIHN0ZDo6Z2VuZXJhdGVfbihzdGQ6OmJhY2tfaW5zZXJ0ZXIoSW5zdGFuY2VzKSwgMzAsIE15SW5kZXhHZW5lcmF0b3IoYSkpOwoKICAgIGZvcihhdXRvICZmIDogSW5zdGFuY2VzKQogICAgICAgIHN0ZDo6Y291dCA8PCBmLkluZGV4IDw8ICcgJzsKCiAgICByZXR1cm4gMDsKfQ==