2017-02-05 3 views
1

Ich habe eine Liste von Dingen, die ich in eine std::vector<std::array<double,2>> codiert. Dies ist im Grunde eine Liste von Punkten (x, y). Ich möchte eine andere Liste erstellen, aber jetzt die Punkte (x, y^2).Anwenden einer Funktion auf Elemente eines Vektors von Arrays

Ich kann dies mit for-Schleifen tun, aber was ist der beste Weg, um dies mit den STL-Algorithmen zu erreichen? Ich habe versucht, eine std::for_each kombiniert mit Lambdas zu machen, aber ich kann noch nicht dorthin kommen.

+0

sollten Sie Ihre nicht funktioniert Versuch Post an dies zu tun. Andernfalls lautet die Antwort "benutze std :: for_each" –

Antwort

3

std::for_each wendet eine Funktion auf eine Reihe von Elementen an, wenn Sie eine Funktion auf einen Bereich anwenden und das Ergebnis in einem anderen Bereich speichern, sollten Sie std::transform verwenden. z.B.

std::transform(src.begin(), src.end(), std::back_inserter(dest), 
       [](const std::array<double,2>& arr) { return std::array<double,2>{arr[0], arr[1] * arr[1]}; }); 
Verwandte Themen