std::valarray
| Definiert in der Header-Datei <valarray> |
||
| template< class T > class valarray; |
||
std::valarray ist die Klasse zur Darstellung und Bearbeitung von Wertarrays. Sie unterstützt elementweise mathematische Operationen und verschiedene Formen von generalisierten Subskriptionsoperatoren, Slicing und indirektem Zugriff.
Inhalt |
[edit] Anmerkungen
std::valarray und Hilfsklassen sind so konzipiert, dass sie frei von bestimmten Formen von Aliasing sind, was es ermöglicht, Operationen auf diesen Klassen ähnlich wie mit dem Schlüsselwort restrict in der C-Programmiersprache zu optimieren. Darüber hinaus dürfen Funktionen und Operatoren, die valarray-Argumente entgegennehmen, Proxy-Objekte zurückgeben, um es dem Compiler zu ermöglichen, einen Ausdruck wie v1 = a * v2 + v3; als eine einzige Schleife zu optimieren, die v1[i] = a * v2[i] + v3[i]; ausführt, wodurch temporäre Objekte oder mehrere Durchläufe vermieden werden. Expression Templates bieten jedoch die gleiche Optimierungstechnik für jeden C++-Container, und die Mehrheit der numerischen Bibliotheken bevorzugt Expression Templates gegenüber Valarrays wegen ihrer Flexibilität. Einige Implementierungen der C++-Standardbibliothek verwenden Expression Templates zur Implementierung effizienter Operationen auf std::valarray (z. B. GNU libstdc++ und LLVM libc++). Nur selten werden Valarrays weiter optimiert, wie z. B. in Intel Integrated Performance Primitives.
[edit] Template-Parameter
| T | - | der Typ der Elemente. Der Typ muss die NumericType-Anforderungen erfüllen |
[edit] Elementtypen
| Mitgliedertyp | Definition |
value_type
|
T
|
[edit] Memberfunktionen
| erstellt ein neues numerisches Array (public member function) | |
| zerstört das numerische Array (public member function) | |
| weist den Inhalt zu (public member function) | |
| liest/schreibt Array-Element, Slice oder Maske (public member function) | |
| wendet einen unären arithmetischen Operator auf jedes Element des Valarrays an (public member function) | |
| wendet einen zusammengesetzten Zuweisungsoperator auf jedes Element des Valarrays an (public member function) | |
| tauscht mit einem anderen valarray (public member function) | |
| gibt die Größe eines valarray zurück (public member function) | |
| ändert die Größe eines valarray (public member function) | |
| berechnet die Summe aller Elemente (public member function) | |
| gibt das kleinste Element zurück (public member function) | |
| gibt das größte Element zurück (public member function) | |
| verschiebt die Elemente des Valarrays mit Nullauffüllung (public member function) | |
| zirkuläre Verschiebung der Elemente des Valarrays (public member function) | |
| wendet eine Funktion auf jedes Element eines Valarrays an (public member function) |
[edit] Nicht-Member-Funktionen
| (C++11) |
spezialisiert den Algorithmus std::swap (function template) |
| (C++11) |
überlädt std::begin (function template) |
| (C++11) |
spezialisiert std::end (function template) |
| wendet binäre Operatoren auf jedes Element zweier Valarrays oder eines Valarrays und eines Werts an (function template) | |
| vergleicht zwei Valarrays oder ein Valarray mit einem Wert (function template) | |
| wendet die Funktion abs auf jedes Element des Valarrays an (function template) | |
Exponentialfunktionen | |
| wendet die Funktion std::exp auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::log auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::log10 auf jedes Element des Valarrays an (function template) | |
Potenzfunktionen | |
| wendet die Funktion std::pow auf zwei Valarrays oder ein Valarray und einen Wert an (function template) | |
| wendet die Funktion std::sqrt auf jedes Element des Valarrays an (function template) | |
Trigonometrische Funktionen | |
| wendet die Funktion std::sin auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::cos auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::tan auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::asin auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::acos auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::atan auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::atan2 auf ein Valarray und einen Wert an (function template) | |
Hyperbolische Funktionen | |
| wendet die Funktion std::sinh auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::cosh auf jedes Element des Valarrays an (function template) | |
| wendet die Funktion std::tanh auf jedes Element des Valarrays an (function template) | |
[edit] Hilfsklassen
| BLAS-ähnlicher Slice eines Valarrays: Startindex, Länge, Schrittweite (class) | |
| Proxy für eine Teilmenge eines Valarrays nach Anwendung eines Slices (class template) | |
| generalisierter Slice eines Valarrays: Startindex, Satz von Längen, Satz von Schrittweiten (class) | |
| Proxy für eine Teilmenge eines Valarrays nach Anwendung eines gslice (class template) | |
Proxy für eine Teilmenge eines Valarrays nach Anwendung einer booleschen Maske operator[](class template) | |
Proxy für eine Teilmenge eines Valarrays nach Anwendung eines indirekten operator[](class template) |
[edit] Deduktionsanleitungen(seit C++17)
[edit] Siehe auch
| (C++26) |
Bequeme Alias-Vorlage für basic_simd, die ihre Breite angeben kann(Alias-Vorlage) |
| (C++26) |
Bequeme Alias-Vorlage für basic_simd_mask, die ihre Breite angeben kann(Alias-Vorlage) |
| (Parallelismus TS v2) |
Datenparalleler Vektortyp (class template) |
| (Parallelismus TS v2) |
Datenparalleler Typ mit dem Elementtyp bool (class template) |