Namespaces
Variants

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

From cppreference.net
Definido en el encabezado <valarray>
template < class T >

std:: valarray < bool > operador == ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operador ! = ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operador < ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operador <= ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >
std:: valarray < bool > operador > ( const std:: valarray < T > & lhs, const std:: valarray < T > & rhs ) ;
template < class T >

std:: valarray < bool > operador >= ( 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 es indefinido 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 array 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 .

Contenidos

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 instanciarse si se cumplen los siguientes requisitos:

  • El operador indicado puede aplicarse al tipo T .
  • El valor resultante puede convertirse inequívocamente a bool .

La función puede implementarse con un tipo de retorno diferente de std::valarray . En este caso, el tipo de reemplazo tiene las siguientes propiedades:

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