Wo ist es eine gute Idee, "std :: valarray" zu verwenden?

9

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?

    
Jayesh 28.09.2017, 08:55
quelle

1 Antwort

3

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

    
Petar Velev 28.09.2017 11:15
quelle

Tags und Links