operator==,!=,<,<=,>,>=(std::valarray)
| ヘッダ <valarray> で定義 |
||
| 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, |
(2) | |
| template< class T > std::valarray<bool> operator==( const std::valarray<T>& lhs, |
(3) | |
各要素を別の値と比較します。
size() != v.size() の場合、動作は未定義です。
目次 |
[編集] パラメータ
| lhs, rhs | - | 比較する数値配列 |
| lhsv, rhsv | - | 数値配列内の各要素と比較する値 |
[編集] 戻り値
対応する要素の比較結果を含む、bool の数値配列。
[編集] 例外
実装定義の例外をスローする場合があります。
[編集] 注意
各演算子は、次の要件が満たされている場合にのみインスタンス化できます。
- 指定された演算子を型
Tに適用できます。 - 結果の値をboolに曖昧さなく変換できます。
- 指定された演算子を型
この関数は、std::valarray とは異なる戻り値型で実装される場合があります。その場合、代替型は以下のプロパティを持ちます。
- std::valarray のすべての const メンバ関数が提供されます。
- std::valarray、std::slice_array、std::gslice_array、std::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を推論します。 |