std::accumulateund std::reducemacht fast das gleiche.
Zusammenfassung von std::reducesagt alles:
similar to `std::accumulate`, except out of order
In vielen Fällen sollten diese Funktionen das gleiche Endergebnis liefern und die gleiche Gesamtfunktionalität aufweisen. Es ist offensichtlich, dass Sie mit einer sehr hohen Lastberechnung usw. experimentieren können, std::reduceum eine Parrelisierung durchzuführen. Dh. Was ist die konventionelle Weisheit hier aus der Vogelperspektive - sollten Sie sich immer an die stumpfe std :: accumulate halten, wenn Sie nicht explizit optimieren? oder sollte nur standardmäßig verwendet werden std::reduce?
Wenn std::reduce(mit Standard / keine Ausführungsrichtlinie gewählt) immer mindestens so schnell ist wie std::accumulate(außer ein paar Anweisungen), dann sollte Akkumulieren meiner Meinung nach nur verwendet werden, wenn die Reihenfolge streng ist.