operator==,!=,<,<=,>,>=(std::valarray)
| Definido en el encabezado <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) | |
Compara cada valor dentro del arreglo numérico con otro valor.
bool que contiene elementos cada uno de los cuales se obtiene aplicando el operador de comparación indicado a los valores correspondientes de lhs y rhs.
El comportamiento no está definido si size() != v.size().
bool que contiene elementos cada uno de los cuales se obtiene aplicando el operador de comparación indicado a lhsv y el valor correspondiente de rhs.
bool que contiene elementos cada uno de los cuales se obtiene aplicando el operador de comparación indicado al valor correspondiente de lhs y rhsv.
Parámetros
| lhs, rhs | - | matrices numéricas a comparar |
| lhsv, rhsv | - | valores a comparar con cada elemento dentro de una matriz numérica |
Valor de retorno
Un arreglo numérico de bool que contiene los resultados de comparación de elementos correspondientes.
Excepciones
Puede lanzar excepciones definidas por la implementación.
Notas
Cada uno de los operadores solo puede ser instanciado si se cumplen los siguientes requisitos:
- El operador indicado puede ser aplicado al tipo
T. - El valor resultante puede convertirse sin ambigüedad a
bool.
- El operador indicado puede ser aplicado al tipo
La función puede ser implementada con un tipo de retorno diferente de std::valarray. En este caso, el tipo de reemplazo tiene las siguientes propiedades:
- Todas las
constfunciones miembro de std::valarray están proporcionadas. - std::valarray, std::slice_array, std::gslice_array, std::mask_array y std::indirect_array pueden construirse a partir del tipo de reemplazo.
- Para cada función que tome un
const std::valarray<T>&excepto begin() y end()(desde C++11), se agregarán funciones idénticas que tomen los tipos de reemplazo; - Para cada función que tome dos argumentos
const std::valarray<T>&, se agregarán funciones idénticas que tomen cada combinación deconst std::valarray<T>&y tipos de reemplazo. - El tipo de retorno no añade más de dos niveles de anidamiento de plantilla sobre el tipo de argumento más profundamente anidado.
Ejemplo
#include <iostream> #include <valarray> int main() { // poner a cero todos los negativos en un valarray std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2}; std::cout << "Antes: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; v[v < 0] = 0; std::cout << "Después: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; // convertir el resultado valarray<bool> de == a un solo bool std::valarray<int> a = {1, 2, 3}; std::valarray<int> b = {2, 4, 6}; std::cout << "2*a == b es " << std::boolalpha << (2 * a == b).min() << '\n'; }
Salida:
Before: 1 -1 0 -3 10 -1 -2 After: 1 0 0 0 10 0 0 2*a == b is true
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3074 | C++98 |
T
se deduce tanto del escalar como del
valarray
para
(2,3)
,
impidiendo llamadas de tipos mixtos |
solo deducir
T
del
valarray
|