<valarray>
演算子
operator!=
2 つの等しいサイズの valarray
オブジェクトの対応する要素が等しくないか、または valarray
のすべての要素が指定した値と等しくないかどうかをテストします。
template <class Type>
valarray<bool>
operator!=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator!=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator!=(
const Type& left,
const valarray<Type>& right);
パラメーター
left
別のvalarray
オブジェクトに対して不等式をテストする要素を持つvalarray
オブジェクト、またはvalarray
内の各要素と比較する要素型の値。
right
別のvalarray
オブジェクトに対して不等式をテストする要素を持つvalarray
オブジェクト、またはvalarray
内の各要素と比較する要素型の値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
対応する要素が等しくない場合は
true
。対応する要素が等しい場合は
false
。
解説
最初のテンプレート演算子は、クラス valarray<bool>
のオブジェクトを返します。各要素I
left[I] != right[I]
。
2 番目のテンプレート演算子は、要素I
にleft[I] != right
を格納します。
3 番目のテンプレート演算子は、要素I
にleft != right[I]
を格納します。
例
// valarray_op_ne.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL != vaR );
cout << "The element-by-element result of "
<< "the not equal comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the not equal comparison test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator%
等しいサイズの 2 つの valarray
オブジェクトの対応する要素を除算するか、 valarray
を指定した値で除算するか、指定した値を valarray
で除算した剰余を取得します。
template <class Type>
valarray<Type>
operator%(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator%(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator%(
const Type& left,
const valarray<Type>& right);
パラメーター
left
別の値またはvalarray
を分割する被除数として機能する値またはvalarray
。
right
除数として機能し、別の値またはvalarray
を除算する値またはvalarray
。
戻り値
left
の要素ごとの剰余をright
で割った要素を持つvalarray
。
例
// valarray_op_rem.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 6 ), vaR ( 6 );
valarray<int> vaREM ( 6 );
for ( i = 0 ; i < 6 ; i += 2 )
vaL [ i ] = 53;
for ( i = 1 ; i < 6 ; i += 2 )
vaL [ i ] = -67;
for ( i = 0 ; i < 6 ; i++ )
vaR [ i ] = 3*i+1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaREM = ( vaL % vaR );
cout << "The remainders from the element-by-element "
<< "division is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaREM [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 53 -67 53 -67 53 -67 ).
The initial Right valarray is: ( 1 4 7 10 13 16 ).
The remainders from the element-by-element division is the
valarray: ( 0 -3 4 -7 1 -3 ).
operator&
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または要素型の valarray
と指定した値の間のビットごとの AND を取得します。
template <class Type>
valarray<Type>
operator&(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator&(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator&(
const Type& left,
const valarray<Type>& right);
パラメーター
left
それぞれの要素をビットごとの AND と組み合わせる 2 つの valarray
オブジェクトの最初のオブジェクト、またはビットごとの AND で結合する要素型の指定された値と、 valarray
の各要素。
right
それぞれの要素をビットごとの AND と組み合わせる 2 つの valarray
オブジェクトの 2 番目のオブジェクト、またはビットごとの AND で結合する要素型の指定された値と、 valarray
の各要素。
戻り値
left
とright
のビットごとの AND 演算の要素ごとの組み合わせである要素を持つvalarray
。
解説
ビットごとの演算は、char
データ型と int
データ型とそのバリエーションのビットを操作するためにのみ使用できます。float
、double
、long double
、void
、bool
など、より複雑なデータ型には使用できません。
ビット演算 AND は論理 AND と同じ真理値表を持ちますが、個々のビットのレベルでデータ型に適用されます。 operator&&
は要素レベルに適用され、0 以外のすべての値がtrue
としてカウントされ、結果はブール値のvalarray
になります。 これに対して、ビットごとの AND operator&
では、ビットごとの演算の結果に応じて、0 または 1 以外の値の valarray
が発生する可能性があります。
例
// valarray_op_bitand.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaBWA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i+1;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaBWA = ( vaL & vaR );
cout << "The element-by-element result of "
<< "the bitwise operator & is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaBWA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 2 0 4 0 6 0 8 0 10 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the bitwise operator & is the
valarray: ( 0 0 0 0 0 4 0 0 0 8 ).
operator&&
同じサイズの 2 つの valarray
オブジェクトの対応する要素間、または valarray
と valarray
要素型の指定した値の間の論理 AND を取得します。
template <class Type>
valarray<bool>
operator&&(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator&&(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator&&(
const Type& left,
const valarray<Type>& right);
パラメーター
left
それぞれの要素を論理 AND と結合する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と組み合わせる要素型の指定された値。
right
それぞれの要素を論理 AND と結合する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と組み合わせる要素型の指定された値。
戻り値
要素がbool
型であり、left
とright
の論理 AND 演算の要素ごとの組み合わせであるvalarray
。
解説
論理 AND operator&&
は要素レベルに適用され、0 以外のすべての値が true
としてカウントされ、結果はブール値の valarray
になります。 これに対して、AND のビットごとのバージョン operator&
、ビットごとの演算の結果に応じて、0 または 1 以外の値の valarray
が発生する可能性があります。
例
// valarray_op_logand.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i-1;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL && vaR );
cout << "The element-by-element result of "
<< "the logical AND operator&& is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 0 0 2 0 4 0 6 0 8 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the logical AND operator&& is the
valarray: ( 0 0 0 1 0 1 0 1 0 1 ).
operator>
1 つの valarray
の要素が等しいサイズの valarray
の要素より大きいか、または valarray
のすべての要素が指定された値より大きいか小さいかをテストします。
template <class Type>
valarray<bool>
operator>(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator>(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator>(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を比較する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と比較する指定された値。
right
要素を比較する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と比較する指定した値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
true
left
要素または値が対応するright
要素または値より大きい場合。false
left
要素または値が対応するright
要素または値より大きくない場合。
解説
2 つの valarray
オブジェクト内の要素の数が等しくない場合、結果は未定義になります。
例
// valarray_op_gt.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL > vaR );
cout << "The element-by-element result of "
<< "the greater than comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the greater than comparison test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator>=
1 つの valarray
の要素が等しいサイズの valarray
の要素以上であるか、または valarray
のすべての要素が指定した値以上か等しいかをテストします。
template <class Type>
valarray<bool>
operator>=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator>=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator>=(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を比較する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と比較する指定された値。
right
要素を比較する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と比較する指定した値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
true
left
要素または値が対応するright
要素または値以上の場合。false
left
要素または値が対応するright
要素または値より小さい場合。
解説
2 つの valarray
オブジェクト内の要素の数が等しくない場合、結果は未定義になります。
例
// valarray_op_ge.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL >= vaR );
cout << "The element-by-element result of "
<< "the greater than or equal test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the greater than or equal test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator>>
指定した数の位置、または 2 番目のvalarray
で指定された要素ごとの量で、valarray
の各要素のビットを右シフトします。
template <class Type>
valarray<Type>
operator>>(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator>>(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator>>(
const Type& left,
const valarray<Type>& right);
パラメーター
left
シフトする値、または要素がシフトされる valarray
。
right
右シフトの量を示す値、または要素が右シフトの要素ごとの量を示す valarray
。
戻り値
要素が指定した量で右にシフトされた valarray
。
解説
符号付きの数値の符号は保持されます。
例
// valarray_op_rs.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 64;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -64;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL >> vaR );
cout << "The element-by-element result of "
<< "the right shift is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 64 -64 64 -64 64 -64 64 -64 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the right shift is the
valarray: ( 64 -32 16 -8 4 -2 1 -1 ).
operator<
1 つの valarray
の要素が等しいサイズの valarray
の要素より小さいか、または valarray
のすべての要素が指定された値より大きいか小さいかをテストします。
template <class Type>
valarray<bool>
operator<(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator<(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator<(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を比較する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と比較する指定された値。
right
要素を比較する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と比較する指定した値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
true
left
要素または値が対応するright
要素または値より小さい場合。false
left
要素または値が対応するright
要素または値より小さくない場合。
解説
2 つの valarray
オブジェクト内の要素の数が等しくない場合、結果は未定義になります。
例
// valarray_op_lt.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL < vaR );
cout << "The element-by-element result of "
<< "the less-than comparison test is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the less-than comparison test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator<=
1 つの valarray
の要素が等しいサイズの valarray
の要素以下であるか、または valarray
のすべての要素が指定した値以上か等しいかをテストします。
template <class Type>
valarray<bool>
operator<=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator<=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator<=(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を比較する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と比較する指定された値。
right
要素を比較する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と比較する指定した値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
true
left
要素または値が対応するright
要素または値以下の場合。false
left
要素または値が対応するright
要素または値より大きい場合。
解説
2 つの valarray
オブジェクト内の要素の数が等しくない場合、結果は未定義になります。
例
// valarray_op_le.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL <= vaR );
cout << "The element-by-element result of "
<< "the less than or equal test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the less than or equal test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator<<
valarray
の各要素のビットを、指定した位置数だけ、または 2 番目のvalarray
で指定された要素ごとの量だけ左にシフトします。
template <class Type>
valarray<Type>
operator<<(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator<<(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator<<(
const Type& left,
const valarray<Type>& right);
パラメーター
left
シフトする値、または要素がシフトされる valarray
。
right
左シフトの量を示す値、または要素が左シフトの要素ごとの量を示す valarray
。
戻り値
要素が指定した量で左にシフトされた valarray
。
解説
符号付きの数値の符号は保持されます。
例
// valarray_op_ls.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL << vaR );
cout << "The element-by-element result of "
<< "the left shift is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 -1 1 -1 1 -1 1 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the left shift is the
valarray: ( 1 -2 4 -8 16 -32 64 -128 ).
operator*
2 つの等しいサイズの valarray
オブジェクトの対応する要素間、または valarray
と指定した値の間の要素ごとの積を取得します。
template <class Type>
valarray<Type>
operator*(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator*(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator*(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を乗算する 2 つの valarray
オブジェクトの 1 つ目、または valarray
の各要素に乗算する指定した値。
right
要素を乗算する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または指定した値を valarray
の各要素と乗算します。
戻り値
要素がleft
とright
の要素ごとの積であるvalarray
。
例
// valarray_op_eprod.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 2;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL * vaR );
cout << "The element-by-element result of "
<< "the multiplication is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the multiplication is the
valarray: ( 0 -1 4 -3 8 -5 12 -7 ).
operator+
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または valarray
と指定した値の間の要素ごとの合計を取得します。
template <class Type>
valarray<Type>
operator+(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator+(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator+(
const Type& left,
const valarray<Type>& right);
パラメーター
left
要素を追加する 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と共に追加する指定された値。
right
要素を追加する 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と共に追加する指定された値。
戻り値
要素が要素ごとのleft
とright
の合計であるvalarray
。
例
// valarray_op_esum.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 2;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL + vaR );
cout << "The element-by-element result of "
<< "the sum is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the sum is the
valarray: ( 2 0 4 2 6 4 8 6 ).
operator-
2 つの等しいサイズの valarray
オブジェクトの対応する要素間、または valarray
と指定した値の間の要素ごとの差を取得します。
template <class Type>
valarray<Type>
operator-(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator-(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator-(
const Type& left,
const valarray<Type>& right);
パラメーター
left
minuendとして機能する値またはvalarray
。他の値またはvalarray
オブジェクトが差を形成する際に減算される値です。
right
サブトラヘンドとして機能する値またはvalarray
、他の値から減算される値、または差を形成するオブジェクトvalarray
。
戻り値
要素がleft
とright
の要素ごとの違いであるvalarray
。
解説
減算の説明で使われる算術用語:
差 = 被減数 - 減数
例
// valarray_op_ediff.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 10;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL - vaR );
cout << "The element-by-element result of "
<< "the difference is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 10 0 10 0 10 0 10 0 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the difference is the
valarray: ( 10 -1 8 -3 6 -5 4 -7 ).
operator/
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または valarray
と指定した値の間の要素ごとの商を取得します。
template <class Type>
valarray<Type>
operator/(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator/(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator/(
const Type& left,
const valarray<Type>& right);
パラメーター
left
商を形成する際に別の値またはvalarray
を分割するdividend として機能する値またはvalarray
。
right
divisorとして機能し、商を形成する別の値またはvalarray
を除算する値またはvalarray
。
戻り値
要素がright
で除算されたleft
の要素ごとの商であるvalarray
。
解説
除算の説明で使われる算術用語:
商 = 被除数 / 除数
例
// valarray_op_equo.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<double> vaL ( 6 ), vaR ( 6 );
valarray<double> vaNE ( 6 );
for ( i = 0 ; i < 6 ; i += 2 )
vaL [ i ] = 100;
for ( i = 1 ; i < 6 ; i += 2 )
vaL [ i ] = -100;
for ( i = 0 ; i < 6 ; i++ )
vaR [ i ] = 2*i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL / vaR );
cout << "The element-by-element result of "
<< "the quotient is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 100 -100 100 -100 100 -100 ).
The initial Right valarray is: ( 0 2 4 6 8 10 ).
The element-by-element result of the quotient is the
valarray: ( inf -50 25 -16.6667 12.5 -10 ).
operator==
2 つの等しいサイズの valarray
オブジェクトの対応する要素が等しいかどうか、または valarray
のすべての要素が指定した値と等しいかどうかをテストします。
template <class Type>
valarray<bool>
operator==(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator==(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator==(
const Type& left,
const valarray<Type>& right);
パラメーター
left
等しいかどうかをテストする要素を持つ 2 つの valarray
オブジェクトの最初のオブジェクト、または各 valarray
要素と比較する指定された値。
right
等しいかどうかをテストする要素を持つ 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または各 valarray
要素と比較する指定した値。
戻り値
ブール値の valarray
。それぞれの値は次のとおりです。
対応する要素が等しい場合は
true
。false
対応する要素が等しくない場合は >
解説
最初のテンプレート演算子は、クラス valarray<bool>
のオブジェクトを返します。各要素I
left[I] == right[I]
。 2 番目のテンプレート演算子は、要素I
にleft[I] == right
を格納します。 3 番目のテンプレート演算子は、要素I
にleft == right[I]
を格納します。
例
// valarray_op_eq.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL == vaR );
cout << "The element-by-element result of "
<< "the equality comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the equality comparison test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator^
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または要素型の valarray
と指定した値の間のビットごとの排他的 OR (XOR) を取得します。
template <class Type>
valarray<Type>
operator^(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator^(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator^(
const Type& left,
const valarray<Type>& right);
パラメーター
left
それぞれの要素をビットごとの XOR と組み合わせる 2 つの valarray
オブジェクトの 1 つ目、またはビットごとの XOR と valarray
の各要素によって結合される要素型の指定された値。
right
それぞれの要素をビットごとの XOR と組み合わせる 2 つの valarray
オブジェクトの 2 番目のオブジェクト、またはビットごとの XOR と valarray
の各要素によって結合される要素型の指定された値。
戻り値
left
とright
のビットごとの XOR 演算の要素ごとの組み合わせである要素を持つvalarray
。
解説
ビットごとの演算は、char
データ型と int
データ型とそのバリエーションのビットを操作するためにのみ使用できます。float
、double
、long double
、void
、bool
など、より複雑なデータ型には使用できません。
ビットごとの排他的 OR (XOR) には、次のセマンティクスがあります。ビット b1 と b2、 b1 XOR b2 は、ビットの 1 つが 1 の場合は 1、両方のビットが 0 の場合、または両方のビットが 1 の場合は 0 です。
例
// valarray_op_xor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL ^ vaR );
cout << "The element-by-element result of "
<< "the bitwise XOR operator^ is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 0 1 0 1 0 1 0 1 0 ).
The initial Right valarray is: ( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise XOR operator^ is the
valarray: ( 1 0 0 3 2 4 7 6 6 9 ).
operator|
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または要素型の valarray
と指定した値の間のビットごとの OR を取得します。
template <class Type>
valarray<Type>
operator|(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator|(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator|(
const Type& left,
const valarray<Type>& right);
パラメーター
left
それぞれの要素をビットごとの OR と結合する 2 つの valarray
オブジェクトの 1 つ目、またはビットごとの OR で結合する要素型の指定された値と、 valarray
の各要素。
right
それぞれの要素をビットごとの OR と組み合わせる 2 つの valarray
オブジェクトの 2 番目のオブジェクト、またはビットごとの OR で結合する要素型の指定された値と、 valarray
の各要素。
戻り値
left
とright
のビットごとの OR 演算の要素ごとの組み合わせである要素を持つvalarray
。
解説
ビットごとの演算は、char
データ型と int
データ型とそのバリエーションのビットを操作するためにのみ使用できます。float
、double
、long double
、void
、bool
など、より複雑なデータ型には使用できません。
ビットごとの OR には論理 OR と同じ真理値テーブルがありますが、個々のビットのレベルのデータ型に適用されます。 ビット b1 と b2 を指定すると、 b1 または b2 は、ビットの少なくとも 1 つが 1 の場合は 1、両方のビットが 0 の場合は 0 になります。 論理 OR operator||
は要素レベルに適用され、0 以外のすべての値が true
としてカウントされ、結果はブール値の valarray
になります。 これに対して、ビットごとの OR operator|
では、ビットごとの演算の結果に応じて、0 または 1 以外の値の valarray
が発生する可能性があります。
例
// valarray_op_bitor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL | vaR );
cout << "The element-by-element result of "
<< "the bitwise OR operator| is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 0 1 0 1 0 1 0 1 0 ).
The initial Right valarray is: ( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise OR operator| is the
valarray: ( 1 0 1 3 3 4 7 6 7 9 ).
operator||
等しいサイズの 2 つの valarray
オブジェクトの対応する要素間、または valarray
と valarray
要素型の指定した値の間の論理 OR を取得します。
template <class Type>
valarray<bool>
operator||(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator||(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator||(
const Type& left,
const valarray<Type>& right);
パラメーター
left
それぞれの要素を論理 OR と組み合わせる 2 つの valarray
オブジェクトの最初のオブジェクト、または valarray
の各要素と組み合わせる要素型の指定された値。
right
それぞれの要素を論理 OR と組み合わせる 2 つの valarray
オブジェクトの 2 番目のオブジェクト、または valarray
の各要素と組み合わせる要素型の指定された値。
戻り値
要素がbool
型であり、left
とright
の論理 OR 演算の要素ごとの組み合わせであるvalarray
。
解説
論理 OR operator||
は要素レベルに適用され、0 以外のすべての値が true
としてカウントされ、結果はブール値の valarray
になります。 これに対して、OR のビットごとのバージョン operator|
、ビットごとの演算の結果に応じて、0 または 1 以外の値の valarray
が発生する可能性があります。
例
// valarray_op_logor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaLOR ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i-1;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = 0;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = 0;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLOR = ( vaL || vaR );
cout << "The element-by-element result of "
<< "the logical OR operator|| is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaLOR [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 0 0 2 0 4 0 6 0 8 ).
The initial Right valarray is: ( 0 0 0 3 0 0 6 0 0 9 ).
The element-by-element result of the logical OR operator|| is the
valarray: ( 0 0 0 1 0 1 1 1 0 1 ).