Suche einen eleganten Weg um einen Vector (c++) mit Zahlen von 1 bis n zu füllen

1 Antwort

Leider fehlen Lambda-Ausdrücke im alten C++. Wenn Du aber einen Compiler hast, der die neuen Sprachfeatures unterstützt, dann geht es so schön:

std::generate(v.begin(), v.end(), []() -> int { static int i=0; return i++;});

Ansonsten geht es auch mit der generate-Funktion, der Generator muss dann aber extern als Funktion oder Funktor definiert werden. Z.B. so (mit Funktor):

std::generate(v.begin(), v.end(), Seq(0));

wobei:

class Seq
{
int i;
public:
Seq(int first) : i(first) {}
int operator()() { return i++; }
};

Was möchtest Du wissen?