Namespaces
Variants

operator+,-,*,/,%,&,|,^,<<,>>,&&,|| (std::valarray)

From cppreference.net
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur bleibt unverändert, wie angefordert.)
Definiert in Header <valarray>
template < class T >

std:: valarray < T > operator + ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator - ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator * ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator / ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator % ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator & ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator | ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator ^ ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator << ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator >> ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operator && ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >

std:: valarray < bool > operator || ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
(1)
template < class T >

std:: valarray < T > operator + ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator - ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator * ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator / ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator % ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator & ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator | ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator ^ ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator << ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < T > operator >> ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operator && ( const typename std:: valarray < T > :: value_type & val,
const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operator || ( const typename std:: valarray < T > :: value_type & val,

const std:: valarray < T > & rhs ) ;
(2)
template < class T >

std:: valarray < T > operator + ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator - ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator * ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator / ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator % ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator & ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator | ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator ^ ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator << ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < T > operator >> ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < bool > operator && ( const std:: valarray < T > & lhs,
const typename std:: valarray < T > :: value_type & val ) ;
template < class T >
std:: valarray < bool > operator || ( const std:: valarray < T > & lhs,

const typename std:: valarray < T > :: value_type & val ) ;
(3)

Wende binäre Operatoren auf jedes Element zweier valarrays oder eines valarrays und eines Wertes an.

1) Die Operatoren arbeiten auf valarrays derselben Größe und geben ein valarray mit derselben Größe wie die Parameter zurück, wobei die Operation auf jedes Element der beiden Argumente angewendet wird.
2,3) Wendet den Operator zwischen jedem Element des valarray und dem Skalar an.

Inhaltsverzeichnis

Parameter

rhs - ein numerisches Array
lhs - ein numerisches Array
val - ein Wert vom Typ T

Rückgabewert

Ein valarray mit derselben Größe wie der Parameter.

Hinweis

Das Verhalten ist undefiniert, wenn die beiden Argumente valarrays mit unterschiedlichen Größen sind.

Die Funktion kann mit einem Rückgabetyp implementiert werden, der sich von std::valarray unterscheidet. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften:

Beispiel

Findet reelle Wurzeln mehrerer Quadratischer Gleichungen .

#include <cstddef>
#include <iostream>
#include <valarray>
int main()
{
    std::valarray<double> a(1, 8);
    std::valarray<double> b{1, 2, 3, 4, 5, 6, 7, 8};
    std::valarray<double> c = -b;
    // literals must also be of type T until LWG3074 (double in this case)
    std::valarray<double> d = std::sqrt(b * b - 4.0 * a * c);
    std::valarray<double> x1 = 2.0 * c / (-b + d);
    std::valarray<double> x2 = 2.0 * c / (-b - d);
    std::cout << "quadratic equation:  root 1:    root 2:   b: c:\n";
    for (std::size_t i = 0; i < a.size(); ++i)
        std::cout << a[i] << "\u00B7x\u00B2 + " << b[i] << "\u00B7x + "
                  << c[i] << " = 0  " << std::fixed << x1[i]
                  << "  " << x2[i] << std::defaultfloat
                  << "  " << -x1[i] - x2[i]
                  << "  " << x1[i] * x2[i] << '\n';
}

Ausgabe:

quadratic equation:  root 1:    root 2:   b: c:
1·x² + 1·x + -1 = 0  -1.618034  0.618034  1  -1
1·x² + 2·x + -2 = 0  -2.732051  0.732051  2  -2
1·x² + 3·x + -3 = 0  -3.791288  0.791288  3  -3
1·x² + 4·x + -4 = 0  -4.828427  0.828427  4  -4
1·x² + 5·x + -5 = 0  -5.854102  0.854102  5  -5
1·x² + 6·x + -6 = 0  -6.872983  0.872983  6  -6
1·x² + 7·x + -7 = 0  -7.887482  0.887482  7  -7
1·x² + 8·x + -8 = 0  -8.898979  0.898979  8  -8

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3074 C++98 T wird sowohl vom Skalar als auch vom valarray für (2,3) abgeleitet, was gemischte Typaufrufe verbietet Leite T nur vom valarray ab

Siehe auch

wendet einen unären arithmetischen Operator auf jedes Element des valarray an
(öffentliche Elementfunktion)
wendet einen zusammengesetzten Zuweisungsoperator auf jedes Element des valarray an
(öffentliche Elementfunktion)