#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';
}