Namespaces
Variants

operator==,!=,<,<=,>,>=(std::valarray)

ja.cppreference.net から
 
 
 
 
ヘッダ <valarray>
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 );
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 );
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<bool> operator==( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T > 
std::valarray<bool> operator!=( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T > 
std::valarray<bool> operator< ( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T > 
std::valarray<bool> operator<=( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T > 
std::valarray<bool> operator> ( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T > 
std::valarray<bool> operator>=( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
(2)
template< class T > 
std::valarray<bool> operator==( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T > 
std::valarray<bool> operator!=( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T > 
std::valarray<bool> operator< ( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T > 
std::valarray<bool> operator<=( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T > 
std::valarray<bool> operator> ( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T > 
std::valarray<bool> operator>=( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
(3)

数値配列内の各値を別の値と比較します。

1) bool の数値配列を返します。各要素は、lhs と rhs の対応する値に指定された比較演算子を適用して得られます。

動作は、size() != v.size() の場合、未定義です。

2) bool の数値配列を返します。各要素は、lhsv と rhs の対応する値に指定された比較演算子を適用して得られます。
3) bool の数値配列を返します。各要素は、lhs と rhsv の対応する値に指定された比較演算子を適用して得られます。

パラメータ

lhs, rhs - 比較する数値配列
lhsv, rhsv - 数値配列内の各要素と比較する値

戻り値

対応する要素の比較結果を含む bool 型の数値配列。

例外

実装定義の例外をスローする可能性があります。

注記

各演算子は、以下の要件が満たされる場合にのみインスタンス化できます:

  • 指定された演算子は、型 T に適用できること。
  • 結果の値が明確に bool に変換できること。

関数は、返却型が std::valarray とは異なる形で実装できること。この場合、代替型は以下の特性を持つ:

  • すべてのconststd::valarrayのメンバ関数が提供される。
  • std::valarray、std::slice_array、std::gslice_array、std::mask_array、および std::indirect_array は代替型から構築できる。
  • const std::valarray<T>& を取るすべての関数について、begin() と end()(C++11以降) を除き、代替型を取る同一の関数が追加される;
  • 2つの const std::valarray<T>& 引数を取るすべての関数について、const std::valarray<T>& と代替型のすべての組み合わせを取る同一の関数が追加される。
  • 戻り値の型は、最も深くネストされた引数の型に対して、テンプレートのネストが2レベル以上増加しないこと。

例

#include <iostream>
#include <valarray>
int main()
{
    // valarray内の負の値をすべてゼロにする
    std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2};
    std::cout << "Before: ";
    for (auto n : v)
        std::cout << n << ' ';
    std::cout << '\n';
    v[v < 0] = 0;
    std::cout << "After: ";
    for (auto n : v)
        std::cout << n << ' ';
    std::cout << '\n';
    // ==演算子の結果であるvalarray<bool>を単一のbool値に変換
    std::valarray<int> a = {1, 2, 3};
    std::valarray<int> b = {2, 4, 6};
    std::cout << "2*a == b is " << std::boolalpha
              << (2 * a == b).min() << '\n';
}

出力:

Before: 1 -1 0 -3 10 -1 -2
After: 1 0 0 0 10 0 0
2*a == b is true

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3074 C++98 T がスカラーと valarray の両方から推論される
(混合型呼び出しが許可されない)
T は valarray からのみ推論する