名前空間
変種
操作

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

From cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
ヘッダ <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) lhsrhs の対応する値に指定された比較演算子を適用して得られる各要素を含む、bool の数値配列を返します。

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

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

目次

[編集] パラメータ

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

[編集] 戻り値

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

[編集] 例外

実装定義の例外をスローする場合があります。

[編集] 注意

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

  • 指定された演算子を型Tに適用できます。
  • 結果の値をboolに曖昧さなく変換できます。

この関数は、std::valarray とは異なる戻り値型で実装される場合があります。その場合、代替型は以下のプロパティを持ちます。

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

[編集]

#include <iostream>
#include <valarray>
 
int main()
{
    // zero all negatives in a 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';
 
    // convert the valarray<bool> result of == to a single 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 (2,3) では、T はスカラーと valarray の両方から推論されます。
異種型呼び出しは許可されません。
valarrayからのみTを推論します。
English 日本語 中文(简体) 中文(繁體)