Kommend von einer Python
Welt, finde ich die Funktion std::iota
sehr begrenzt. Warum ist die Schnittstelle darauf beschränkt, keine UnaryFunction
zu nehmen?Std :: Iota ist sehr begrenzt
Zum Beispiel kann ich
>>> x = range(0, 10)
in
std::vector<int> x(10);
std::iota(std::begin(x), std::end(x), 0);
konvertieren Aber wie würde man tun:
>>> x = range(0,20,2)
oder sogar
>>> x = range(10,0,-1)
Ich weiß, dass es trivial ist, eine solche Funktion zu schreiben oder Boost zu verwenden, aber ich dachte mir, dass C++ - Komitee diesen Entwurf sorgfältig ausgewählt haben muss. So fehlt mir eindeutig etwas aus C++ 11.
Sie 'std verwenden können :: verwandeln 'wenn Sie eine andere Operation über einen Vektor ausführen möchten. –
Siehe http://stackoverflow.com/q/1977339/2301450 – vaultah
Werfen Sie einen Blick auf std :: generate, aber die Quintessenz ist, dass es in C++ noch keine wirklich elegante Standardbibliothekslösung gibt. – MikeMB