名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
ヘッダ <valarray> で定義
template<class T>

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

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

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

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

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

                               consttypenamestd::valarray<T>::value_type& val);
(3)

2つの valarray の各要素に、または1つの valarray の各要素と1つの値に、二項演算子を適用します。

1) 演算子は同じサイズの valarray に対して動作し、2つの引数のすべての要素に演算が適用された引数と同じサイズの valarray を返します。
2,3) valarray の各要素とスカラーの間に演算子を適用します。

目次

[編集]引数

rhs - 数値配列
lhs - 数値配列
val - T 型の値

[編集]戻り値

引数と同じサイズの valarray。

[編集]ノート

2つの引数が異なるサイズの valarray であるとき、動作は未定義です。

関数は std::valarray と異なる戻り値の型を使用して実装することができます。 この場合、その置換型は以下の性質を持ちます。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 3074 C++98 T is deduced from both the scalar and the valarray for (2-3), disallowing mixed-type calls only deduce T from the valarray

[編集]

Finds real roots of multiple quadratic equations.

#include <valarray>#include <iostream>   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 (double in this case)std::valarray<double> d =std::sqrt((b * b -4.0* a * c));std::valarray<double> x1 =(-b - d)/(2.0* a);std::valarray<double> x2 =(-b + d)/(2.0* a);std::cout<<"quadratic equation root 1, root 2"<<"\n";for(size_t i =0; i < a.size();++i){std::cout<< a[i]<<"x\u00B2 + "<< b[i]<<"x + "<< c[i]<<" = 0 ";std::cout<< x1[i]<<", "<< x2[i]<<"\n";}}

出力:

quadratic equation root 1, root 2 1x² + 1x + -1 = 0 -1.61803, 0.618034 1x² + 2x + -2 = 0 -2.73205, 0.732051 1x² + 3x + -3 = 0 -3.79129, 0.791288 1x² + 4x + -4 = 0 -4.82843, 0.828427 1x² + 5x + -5 = 0 -5.8541, 0.854102 1x² + 6x + -6 = 0 -6.87298, 0.872983 1x² + 7x + -7 = 0 -7.88748, 0.887482 1x² + 8x + -8 = 0 -8.89898, 0.898979
close