#include <vector>
#include <set>
#include <algorithm>
#include <iterator>
#include <iostream>
using namespace std;
struct Kombinierte_Werte {
int fortlaufende_nummer;
int nummer_aus_set;
};
struct Kombinator
{
int fortlaufende_nummer;
Kombinierte_Werte operator()(int nummer_aus_set)
{
return Kombinierte_Werte{fortlaufende_nummer++, nummer_aus_set};
}
};
int main()
{
set<int> my_set{14, 18, 16, 27};
vector<Kombinierte_Werte> ergebnis;
Kombinator kombinator = {0};
transform(my_set.begin(), my_set.end(), back_inserter(ergebnis), kombinator);
for(auto element: ergebnis)
cout << element.fortlaufende_nummer << '\t' << element.nummer_aus_set << '\n';
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnN0cnVjdCBLb21iaW5pZXJ0ZV9XZXJ0ZSB7CiAgIGludCAgZm9ydGxhdWZlbmRlX251bW1lcjsKICAgaW50IG51bW1lcl9hdXNfc2V0Owp9OwoKc3RydWN0IEtvbWJpbmF0b3IKewoJaW50IGZvcnRsYXVmZW5kZV9udW1tZXI7CglLb21iaW5pZXJ0ZV9XZXJ0ZSBvcGVyYXRvcigpKGludCBudW1tZXJfYXVzX3NldCkKCXsKCQlyZXR1cm4gS29tYmluaWVydGVfV2VydGV7Zm9ydGxhdWZlbmRlX251bW1lcisrLCBudW1tZXJfYXVzX3NldH07Cgl9Cn07CgppbnQgbWFpbigpCnsKICBzZXQ8aW50PiBteV9zZXR7MTQsIDE4LCAxNiwgMjd9OwogCiAgdmVjdG9yPEtvbWJpbmllcnRlX1dlcnRlPiBlcmdlYm5pczsKICBLb21iaW5hdG9yIGtvbWJpbmF0b3IgPSB7MH07CiAgdHJhbnNmb3JtKG15X3NldC5iZWdpbigpLCBteV9zZXQuZW5kKCksIGJhY2tfaW5zZXJ0ZXIoZXJnZWJuaXMpLCBrb21iaW5hdG9yKTsKICAKICBmb3IoYXV0byBlbGVtZW50OiBlcmdlYm5pcykKICAJY291dCA8PCBlbGVtZW50LmZvcnRsYXVmZW5kZV9udW1tZXIgPDwgJ1x0JyA8PCBlbGVtZW50Lm51bW1lcl9hdXNfc2V0IDw8ICdcbic7Cn0=