std:: valarray
|
Definiert im Header
<valarray>
|
||
|
template
<
class
T
>
class valarray ; |
||
std::valarray
ist die Klasse zur Darstellung und Manipulation von Werte-Arrays. Sie unterstützt elementweise mathematische Operationen und verschiedene Formen von generalisierten Subskript-Operatoren, Slicing und indirektem Zugriff.
Inhaltsverzeichnis |
Hinweise
std::valarray
und Hilfsklassen sind so definiert, dass sie frei von bestimmten Formen von Aliasing sind, wodurch Operationen auf diesen Klassen ähnlich optimiert werden können wie durch das Schlüsselwort
restrict
in der Programmiersprache C. Zusätzlich ist es Funktionen und Operatoren, die
valarray
-Argumente entgegennehmen, erlaubt, Proxy-Objekte zurückzugeben, um dem Compiler zu ermöglichen, einen Ausdruck wie
v1
=
a
*
v2
+
v3
;
als einzelne Schleife zu optimieren, die
v1
[
i
]
=
a
*
v2
[
i
]
+
v3
[
i
]
;
ausführt, wodurch temporäre Objekte oder mehrfache Durchläufe vermieden werden. Allerdings machen
Expression Templates
die gleiche Optimierungstechnik für jeden C++-Container verfügbar, und die Mehrheit der numerischen Bibliotheken bevorzugt Expression Templates gegenüber valarrays aufgrund ihrer Flexibilität. Einige Implementierungen der C++-Standardbibliothek verwenden Expression Templates, um effiziente Operationen auf
std::valarray
zu implementieren (z.B. GNU libstdc++ und LLVM libc++). Nur selten werden valarrays weiter optimiert, wie z.B. in den
Intel Integrated Performance Primitives
.
Template-Parameter
| T | - | der Typ der Elemente. Der Typ muss die NumericType Anforderungen erfüllen |
Mitgliedertypen
| Mitgliedtyp | Definition |
value_type
|
T
|
Memberfunktionen
|
Konstruiert ein neues numerisches Array
(öffentliche Elementfunktion) |
|
|
Zerstört das numerische Array
(öffentliche Elementfunktion) |
|
|
Weist die Inhalte zu
(öffentliche Elementfunktion) |
|
|
Holt/setzt Valarray-Element, Slice oder Maske
(öffentliche Elementfunktion) |
|
|
Wendet einen unären arithmetischen Operator auf jedes Element des Valarrays an
(öffentliche Elementfunktion) |
|
|
Wendet einen zusammengesetzten Zuweisungsoperator auf jedes Element des Valarrays an
(öffentliche Elementfunktion) |
|
|
Tauscht mit einem anderen Valarray
(öffentliche Elementfunktion) |
|
|
Gibt die Größe des Valarrays zurück
(öffentliche Elementfunktion) |
|
|
Ändert die Größe des Valarrays
(öffentliche Elementfunktion) |
|
|
Berechnet die Summe aller Elemente
(öffentliche Elementfunktion) |
|
|
Gibt das kleinste Element zurück
(öffentliche Elementfunktion) |
|
|
Gibt das größte Element zurück
(öffentliche Elementfunktion) |
|
|
Nullauffüllende Verschiebung der Elemente des Valarrays
(öffentliche Elementfunktion) |
|
|
Zirkuläre Verschiebung der Elemente des Valarrays
(öffentliche Elementfunktion) |
|
|
Wendet eine Funktion auf jedes Element eines Valarrays an
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
(C++11)
|
spezialisiert den
std::swap
Algorithmus
(Funktions-Template) |
|
(C++11)
|
überlädt
std::begin
(Funktionsschablone) |
|
(C++11)
|
spezialisiert
std::end
(Funktionsschablone) |
|
wendet binäre Operatoren auf jedes Element von zwei valarrays oder einem valarray und einem Wert an
(Funktionsschablone) |
|
|
vergleicht zwei valarrays oder ein valarray mit einem Wert
(Funktions-Template) |
|
|
wendet die Funktion
abs
auf jedes Element des valarray an
(Funktions-Template) |
|
Exponentialfunktionen |
|
|
wendet die Funktion
std::exp
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::log
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::log10
auf jedes Element des valarray an
(Funktions-Template) |
|
Potenzfunktionen |
|
|
wendet die Funktion
std::pow
auf zwei Valarrays oder ein Valarray und einen Wert an
(Funktions-Template) |
|
|
wendet die Funktion
std::sqrt
auf jedes Element des valarray an
(Funktions-Template) |
|
Trigonometrische Funktionen |
|
|
wendet die Funktion
std::sin
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::cos
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::tan
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::asin
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::acos
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::atan
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::atan2
auf ein valarray und einen Wert an
(Funktions-Template) |
|
Hyperbelfunktionen |
|
|
wendet die Funktion
std::sinh
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::cosh
auf jedes Element des valarray an
(Funktions-Template) |
|
|
wendet die Funktion
std::tanh
auf jedes Element des valarray an
(Funktions-Template) |
|
Hilfsklassen
|
BLAS-ähnlicher Ausschnitt eines valarray: Startindex, Länge, Schrittweite
(Klasse) |
|
|
Proxy für eine Teilmenge eines valarray nach Anwendung eines slice
(Klassentemplate) |
|
|
Generalisierter Ausschnitt eines valarray: Startindex, Menge von Längen, Menge von Schrittweiten
(Klasse) |
|
|
Proxy für eine Teilmenge eines valarray nach Anwendung eines gslice
(Klassentemplate) |
|
Proxy für eine Teilmenge eines valarray nach Anwendung einer booleschen Maske
operator[]
(Klassentemplate) |
|
Proxy für eine Teilmenge eines valarray nach Anwendung eines indirekten
operator[]
(Klassentemplate) |
Deduction guides (seit C++17)
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) |
|
(parallelism TS v2)
|
Datenparalleler Vektortyp
(Klassenvorlage) |
|
(parallelism TS v2)
|
Datenparalleler Typ mit dem Elementtyp bool
(Klassenvorlage) |