operator==,!=,<,<=,>,>= (std::valarray)
|
Definido en el encabezado
<valarray>
|
||
|
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,
|
(2) | |
|
template
<
class
T
>
std::
valarray
<
bool
>
operator
==
(
const
std::
valarray
<
T
>
&
lhs,
|
(3) | |
Compara cada valor dentro del arreglo numérico con otro valor.
El comportamiento es indefinido si size ( ) ! = v. size ( ) .
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 .
-
El operador indicado puede aplicarse al tipo
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:
-
- Se proporcionan todas las funciones miembro const de std::valarray .
- 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 toma un const std:: valarray < T > & excepto begin() y end() (desde C++11) , se añadirán funciones idénticas que tomen los tipos de reemplazo;
- Para cada función que toma dos argumentos const std:: valarray < T > & , se añadirá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 plantillas 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
|