Ich habe über std::valarray
in einem C ++ Buch gelesen, geschrieben von Nicolai M. Josuttis . Er schreibt in seinem Buch Die C ++ - Standardbibliothek, Kapitel 17.4:
Die Valarray-Klassen wurden nicht sehr gut entworfen. In der Tat, niemand versuchte herauszufinden, ob die endgültige Spezifikation funktionierte. Dies geschah, weil sich niemand für diese Klassen "verantwortlich" fühlte. Das Leute, die vararrays in die C ++ Standardbibliothek einführten, haben die Ausschuss lange bevor der Standard fertig war. Als Konsequenz, Vararrays werden selten verwendet.
Also, wo ist es eine gute Idee, std::valarray
zu benutzen?
Valarrays werden erstellt, um dem Compiler eine schnellere Ausführung zu ermöglichen. Diese Optimierungen sind jedoch auf andere Weise möglich, und Valarrays werden selten verwendet.
std :: valarray und Hilfsklassen sind so definiert, dass sie frei von bestimmten Formen von Aliasing sind, wodurch Operationen an diesen Klassen optimiert werden können, ähnlich der Wirkung des Schlüsselwortes restrict in der C-Programmiersprache. Außerdem können Funktionen und Operatoren, die Valarray-Argumente entgegennehmen, Proxy-Objekte zurückgeben, damit der Compiler einen Ausdruck optimieren kann, z. B. v1 = a v2 + v3; als eine einzige Schleife, die v1 [i] = a v2 [i] + v3 [i] ausführt; Vermeiden Sie irgendwelche Provisorien oder mehrere Durchgänge. .....
Mit anderen Worten, Valarrays sollen an Orten verwendet werden, an denen viele Werte vorkommen, die meistens an einfache Ausdrücke übergeben werden.
Nur selten werden Vararrays weiter optimiert, wie z.B. Intel Parallel Studio.
Weitere Informationen finden Sie unter cppreference