Namespaces
Variants

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

De es.cppreference.net
 
 
 
 
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.

1) Devuelve un arreglo numérico de 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().

2) Devuelve un arreglo numérico de 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.
3) Devuelve un arreglo numérico de 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.

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 const funciones 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 de const 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