Namespaces
Variants
Actions

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

From cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
Defined in header <valarray>
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 );
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 );
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<bool> operator==(consttypenamestd::valarray<T>::value_type& lhsv,
                                conststd::valarray<T>& rhs );
template<class T >
std::valarray<bool> operator!=(consttypenamestd::valarray<T>::value_type& lhsv,
                                conststd::valarray<T>& rhs );
template<class T >
std::valarray<bool> operator<(consttypenamestd::valarray<T>::value_type& lhsv,
                                conststd::valarray<T>& rhs );
template<class T >
std::valarray<bool> operator<=(consttypenamestd::valarray<T>::value_type& lhsv,
                                conststd::valarray<T>& rhs );
template<class T >
std::valarray<bool> operator>(consttypenamestd::valarray<T>::value_type& lhsv,
                                conststd::valarray<T>& rhs );
template<class T >
std::valarray<bool> operator>=(consttypenamestd::valarray<T>::value_type& lhsv,

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

std::valarray<bool> operator==(conststd::valarray<T>& lhs,
                                consttypenamestd::valarray<T>::value_type& rhsv );
template<class T >
std::valarray<bool> operator!=(conststd::valarray<T>& lhs,
                                consttypenamestd::valarray<T>::value_type& rhsv );
template<class T >
std::valarray<bool> operator<(conststd::valarray<T>& lhs,
                                consttypenamestd::valarray<T>::value_type& rhsv );
template<class T >
std::valarray<bool> operator<=(conststd::valarray<T>& lhs,
                                consttypenamestd::valarray<T>::value_type& rhsv );
template<class T >
std::valarray<bool> operator>(conststd::valarray<T>& lhs,
                                consttypenamestd::valarray<T>::value_type& rhsv );
template<class T >
std::valarray<bool> operator>=(conststd::valarray<T>& lhs,

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

Compares each value within the numeric array with another value.

1) Returns a numeric array of bool containing elements each of which is obtained by applying the indicated comparison operator to the corresponding values of lhs and rhs.

The behavior is undefined if size()!= v.size().

2) Returns a numeric array of bool containing elements each of which is obtained by applying the indicated comparison operator to lhsv and the corresponding value of rhs.
3) Returns a numeric array of bool containing elements each of which is obtained by applying the indicated comparison operator to the corresponding value of lhs and rhsv.

Contents

[edit]Parameters

lhs, rhs - numeric arrays to compare
lhsv, rhsv - values to compare to each element within a numeric array

[edit]Return value

A numeric array of bool containing comparison results of corresponding elements.

[edit]Exceptions

May throw implementation-defined exceptions.

[edit]Notes

Each of the operators can only be instantiated if the following requirements are met:

  • The indicated operator can be applied to type T.
  • The result value can be unambiguously converted to bool.

The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:

[edit]Example

#include <iostream>#include <valarray>   int main(){// zero all negatives in a valarraystd::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 boolstd::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';}

Output:

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

[edit]Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 3074C++98 T is deduced from both the scalar and the valarray for (2,3),
disallowing mixed-type calls
only deduce T from the valarray
close