<valarray>
Operadores
operator!=
Comprueba si los elementos correspondientes de dos objetos valarray
de igual tamaño no son iguales o si todos los elementos de una valarray
no son iguales a un valor especificado.
template <class Type>
valarray<bool>
operator!=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator!=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator!=(
const Type& left,
const valarray<Type>& right);
Parámetros
left
Un objeto valarray
cuyos elementos se van a probar para comprobar la desigualdad con otro objeto valarray
, o un valor de tipo de elemento que se va a comparar con cada elemento de un objeto valarray
.
right
Un objeto valarray
cuyos elementos se van a probar para comprobar la desigualdad con otro objeto valarray
, o un valor de tipo de elemento que se va a comparar con cada elemento de un objeto valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si los elementos correspondientes no son iguales.false
si los elementos correspondientes son iguales.
Comentarios
El primer operador de plantilla devuelve un objeto de la clase valarray<bool>
, en el que cada uno de sus elementos I
es left[I] != right[I]
.
El segundo operador de plantilla almacena left[I] != right
en el elemento I
.
El tercer operador de plantilla almacena left != right[I]
en el elemento I
.
Ejemplo
// valarray_op_ne.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL != vaR );
cout << "The element-by-element result of "
<< "the not equal comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the not equal comparison test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator%
Obtiene el resto de dividir los elementos correspondientes de objetos valarray
de igual tamaño o de dividir una valarray
por un valor especificado o de dividir un valor especificado por una valarray
.
template <class Type>
valarray<Type>
operator%(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator%(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator%(
const Type& left,
const valarray<Type>& right);
Parámetros
left
Un valor o valarray
que actúa como el dividendo en el que se va a dividir otro valor o valarray
.
right
Un valor o valarray
que actúa como el divisor y que divide otro valor o valarray
.
Valor devuelto
Una valarray
cuyos elementos son los restos por elemento de left
dividido por right
.
Ejemplo
// valarray_op_rem.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 6 ), vaR ( 6 );
valarray<int> vaREM ( 6 );
for ( i = 0 ; i < 6 ; i += 2 )
vaL [ i ] = 53;
for ( i = 1 ; i < 6 ; i += 2 )
vaL [ i ] = -67;
for ( i = 0 ; i < 6 ; i++ )
vaR [ i ] = 3*i+1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaREM = ( vaL % vaR );
cout << "The remainders from the element-by-element "
<< "division is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaREM [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 53 -67 53 -67 53 -67 ).
The initial Right valarray is: ( 1 4 7 10 13 16 ).
The remainders from the element-by-element division is the
valarray: ( 0 -3 4 -7 1 -3 ).
operator&
Obtiene el AND bit a bit entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado del tipo de elemento.
template <class Type>
valarray<Type>
operator&(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator&(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator&(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el AND bit a bit o un valor especificado del tipo de elemento que va a combinarse AND bit a bit con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el AND bit a bit o un valor especificado del tipo de elemento que va a combinarse AND bit a bit con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son la combinación por elemento de la operación AND bit a bit de left
y right
.
Comentarios
Una operación bit a bit solo puede usarse para manipular los bits de los tipos de datos char
y int
, y sus variantes, y no en float
double
long double
void
bool
u otros tipos de datos más complejos.
El AND bit a bit tiene la misma tabla de verdad que el AND lógico pero se aplica al tipo de datos en el nivel de los bits individuales. El operator&&
se aplica en el nivel de elemento, contando todos los valores distintos de cero como true
, y el resultado es una valarray
de valores booleanos. El operator&
AND bit a bit, por el contrario, puede dar lugar a una valarray
de valores distintos de 0 o 1, dependiendo del resultado de la operación bit a bit.
Ejemplo
// valarray_op_bitand.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaBWA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i+1;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaBWA = ( vaL & vaR );
cout << "The element-by-element result of "
<< "the bitwise operator & is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaBWA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 2 0 4 0 6 0 8 0 10 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the bitwise operator & is the
valarray: ( 0 0 0 0 0 4 0 0 0 8 ).
operator&&
Obtiene el AND lógico entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado del tipo de elemento valarray
.
template <class Type>
valarray<bool>
operator&&(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator&&(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator&&(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el AND lógico o un valor especificado del tipo de elemento que va a combinarse con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el AND lógico o un valor especificado del tipo de elemento que va a combinarse con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son de tipo bool
y son la combinación por elemento de la operación AND lógica de left
y right
.
Comentarios
El operator&&
AND lógico se aplica en el nivel de elemento, contando todos los valores distintos de cero como true
, y el resultado es una valarray
de valores booleanos. La versión de AND bit a bit, operator&
, por el contrario, puede dar lugar a una valarray
de valores distintos de 0 o 1, dependiendo del resultado de la operación bit a bit.
Ejemplo
// valarray_op_logand.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i-1;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL && vaR );
cout << "The element-by-element result of "
<< "the logical AND operator&& is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 0 0 2 0 4 0 6 0 8 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the logical AND operator&& is the
valarray: ( 0 0 0 1 0 1 0 1 0 1 ).
operator>
Comprueba si los elementos de una valarray
son mayores que los elementos de una valarray
de igual tamaño o si todos los elementos de una valarray
son mayores o menores que un valor especificado.
template <class Type>
valarray<bool>
operator>(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator>(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator>(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si el elemento o valor deleft
es mayor que el elemento o valor correspondiente deright
.false
si el elemento o valor deleft
no es mayor que el elemento o valor correspondiente deright
.
Comentarios
Si el número de elementos de dos objetos valarray
no es igual, el resultado es indefinido.
Ejemplo
// valarray_op_gt.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL > vaR );
cout << "The element-by-element result of "
<< "the greater than comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the greater than comparison test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator>=
Comprueba si los elementos de una valarray
son mayores o iguales que los elementos de una valarray
de igual tamaño o si todos los elementos de una valarray
son mayores o iguales o menores que un valor especificado.
template <class Type>
valarray<bool>
operator>=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator>=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator>=(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si el elemento o valor deleft
es mayor o igual que el elemento o valor correspondiente deright
.false
si el elemento o valor deleft
es menor que el elemento o valor correspondiente deright
.
Comentarios
Si el número de elementos de dos objetos valarray
no es igual, el resultado es indefinido.
Ejemplo
// valarray_op_ge.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL >= vaR );
cout << "The element-by-element result of "
<< "the greater than or equal test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the greater than or equal test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator>>
Desplaza hacia la derecha los bits de cada elemento de un valarray
un número especificado de posiciones o una cantidad de elementos especificada por una segunda valarray
.
template <class Type>
valarray<Type>
operator>>(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator>>(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator>>(
const Type& left,
const valarray<Type>& right);
Parámetros
left
El valor que se va a desplazar o la valarray
cuyos elementos se van a desplazar.
right
El valor que indica la cantidad de desplazamiento a la derecha o la valarray
cuyos elementos indican la cantidad de desplazamiento a la derecha por elemento.
Valor devuelto
Una valarray
cuyos elementos se han desplazado a la derecha la cantidad especificada.
Comentarios
Los números con signo conservan sus signos.
Ejemplo
// valarray_op_rs.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 64;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -64;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL >> vaR );
cout << "The element-by-element result of "
<< "the right shift is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 64 -64 64 -64 64 -64 64 -64 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the right shift is the
valarray: ( 64 -32 16 -8 4 -2 1 -1 ).
operator<
Comprueba si los elementos de una valarray
son menores que los elementos de una valarray
de igual tamaño o si todos los elementos de una valarray
son mayores o menores que un valor especificado.
template <class Type>
valarray<bool>
operator<(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator<(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator<(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si el elemento o valor deleft
es menor que el elemento o valor correspondiente deright
.false
si el elemento o valor deleft
es menor que el elemento o valor correspondiente deright
.
Comentarios
Si el número de elementos de dos objetos valarray
no es igual, el resultado es indefinido.
Ejemplo
// valarray_op_lt.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL < vaR );
cout << "The element-by-element result of "
<< "the less-than comparison test is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the less-than comparison test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator<=
Comprueba si los elementos de una valarray
son menores o iguales que los elementos de una valarray
de igual tamaño o si todos los elementos de una valarray
son mayores o iguales o menores que un valor especificado.
template <class Type>
valarray<bool>
operator<=(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator<=(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator<=(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a comparar o un valor especificado que se va a comparar con cada elemento de una valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si el elemento o valor deleft
es menor o igual que el elemento o valor correspondiente deright
.false
si el elemento o valor deleft
es mayor que el elemento o valor correspondiente deright
.
Comentarios
Si el número de elementos de dos objetos valarray
no es igual, el resultado es indefinido.
Ejemplo
// valarray_op_le.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i - 1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL <= vaR );
cout << "The element-by-element result of "
<< "the less than or equal test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( -1 0 1 2 3 4 5 6 7 8 ).
The element-by-element result of the less than or equal test is the
valarray: ( 0 0 1 0 1 0 1 0 1 0 ).
operator<<
Desplaza hacia la izquierda los bits de cada elemento de un valarray
un número especificado de posiciones o una cantidad de elementos especificada por una segunda valarray
.
template <class Type>
valarray<Type>
operator<<(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator<<(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator<<(
const Type& left,
const valarray<Type>& right);
Parámetros
left
El valor que se va a desplazar o la valarray
cuyos elementos se van a desplazar.
right
El valor que indica la cantidad de desplazamiento a la izquierda o una valarray
cuyos elementos indican la cantidad de desplazamiento a la izquierda por elemento.
Valor devuelto
Una valarray
cuyos elementos se han desplazado a la izquierda la cantidad especificada.
Comentarios
Los números con signo conservan sus signos.
Ejemplo
// valarray_op_ls.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL << vaR );
cout << "The element-by-element result of "
<< "the left shift is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 -1 1 -1 1 -1 1 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the left shift is the
valarray: ( 1 -2 4 -8 16 -32 64 -128 ).
operator*
Obtiene el producto basado en elemento entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado.
template <class Type>
valarray<Type>
operator*(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator*(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator*(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los objetos valarray
cuyos elementos se van a multiplicar o un valor especificado que se va a multiplicar con cada elemento de una valarray
.
right
La segunda de los objetos valarray
cuyos elementos se van a multiplicar o un valor especificado que se va a multiplicar con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son el producto por elemento de left
y right
.
Ejemplo
// valarray_op_eprod.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 2;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL * vaR );
cout << "The element-by-element result of "
<< "the multiplication is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the multiplication is the
valarray: ( 0 -1 4 -3 8 -5 12 -7 ).
operator+
Obtiene la suma basada en elemento entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado.
template <class Type>
valarray<Type>
operator+(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator+(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator+(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a sumar o un valor especificado que se va a sumar con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a sumar o un valor especificado que se va a sumar con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son la suma por elemento de left
y right
.
Ejemplo
// valarray_op_esum.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 2;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = -1;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL + vaR );
cout << "The element-by-element result of "
<< "the sum is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the sum is the
valarray: ( 2 0 4 2 6 4 8 6 ).
operator-
Obtiene la diferencia basada en elemento entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado.
template <class Type>
valarray<Type>
operator-(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator-(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator-(
const Type& left,
const valarray<Type>& right);
Parámetros
left
Un valor o valarray
que actúa como el minuendo desde el que otros valores u objetos valarray
se van a restar para formar la diferencia.
right
Un valor o valarray
que actúa como sustraendo que se va a restar de otros valores u objetos valarray
para formar la diferencia.
Valor devuelto
Una valarray
cuyos elementos son la diferencia por elemento de left
y right
.
Comentarios
La terminología aritmética usada para describir una resta:
diferencia = minuendo - sustraendo
Ejemplo
// valarray_op_ediff.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 8 ), vaR ( 8 );
valarray<int> vaNE ( 8 );
for ( i = 0 ; i < 8 ; i += 2 )
vaL [ i ] = 10;
for ( i = 1 ; i < 8 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 8 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL - vaR );
cout << "The element-by-element result of "
<< "the difference is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 10 0 10 0 10 0 10 0 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the difference is the
valarray: ( 10 -1 8 -3 6 -5 4 -7 ).
operator/
Obtiene el cociente basado en elemento entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado.
template <class Type>
valarray<Type>
operator/(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator/(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator/(
const Type& left,
const valarray<Type>& right);
Parámetros
left
Un valor o valarray
que actúa como el dividendo en el que se va a dividir otro valor o valarray
para formar el cociente.
right
Un valor o valarray
que actúa como el divisor y que divide otro valor o valarray
para formar el cociente.
Valor devuelto
Una valarray
cuyos elementos son el cociente por elemento de left
dividido por right
.
Comentarios
La terminología aritmética usada para describir una división:
cociente = dividendo / divisor
Ejemplo
// valarray_op_equo.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<double> vaL ( 6 ), vaR ( 6 );
valarray<double> vaNE ( 6 );
for ( i = 0 ; i < 6 ; i += 2 )
vaL [ i ] = 100;
for ( i = 1 ; i < 6 ; i += 2 )
vaL [ i ] = -100;
for ( i = 0 ; i < 6 ; i++ )
vaR [ i ] = 2*i;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL / vaR );
cout << "The element-by-element result of "
<< "the quotient is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 100 -100 100 -100 100 -100 ).
The initial Right valarray is: ( 0 2 4 6 8 10 ).
The element-by-element result of the quotient is the
valarray: ( inf -50 25 -16.6667 12.5 -10 ).
operator==
Comprueba si los elementos correspondientes de dos objetos valarray
de igual tamaño son iguales o si todos los elementos de una valarray
son iguales a un valor especificado.
template <class Type>
valarray<bool>
operator==(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator==(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator==(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos se van a probar para determinar si son iguales o un valor especificado que se va a comparar con cada elemento valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos se van a probar para determinar si son iguales o un valor especificado que se va a comparar con cada elemento valarray
.
Valor devuelto
Una valarray
de valores booleanos, en la que cada uno es:
true
si los elementos correspondientes son iguales.false
si los elementos correspondientes no son iguales.
Comentarios
El primer operador de plantilla devuelve un objeto de la clase valarray<bool>
, en el que cada uno de sus elementos I
es left[I] == right[I]
. El segundo operador de plantilla almacena left[I] == right
en el elemento I
. El tercer operador de plantilla almacena left == right[I]
en el elemento I
.
Ejemplo
// valarray_op_eq.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaNE ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i;
for ( i = 0 ; i < 10 ; i++ )
vaR [ i ] = i;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaNE = ( vaL == vaR );
cout << "The element-by-element result of "
<< "the equality comparison test is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNE [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 1 -2 3 -4 5 -6 7 -8 9 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the equality comparison test is the
valarray: ( 1 1 0 1 0 1 0 1 0 1 ).
operator^
Obtiene el OR (XOR) exclusivo bit a bit entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado del tipo de elemento.
template <class Type>
valarray<Type>
operator^(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator^(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator^(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el XOR bit a bit o un valor especificado del tipo de elemento que va a combinarse XOR bit a bit con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el XOR bit a bit o un valor especificado del tipo de elemento que va a combinarse XOR bit a bit con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son la combinación por elemento de la operación XOR bit a bit de left
y right
.
Comentarios
Una operación bit a bit solo puede usarse para manipular los bits de los tipos de datos char
y int
, y sus variantes, y no en float
double
long double
void
bool
u otros tipos de datos más complejos.
El OR (XOR) exclusivo bit a bit tiene la semántica siguiente: dados los bits b1 y b2, b1 XOR b2 es 1 si exactamente uno de los bits es 1. Es 0 si ambos bits son 0 o si ambos bits son 1.
Ejemplo
// valarray_op_xor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL ^ vaR );
cout << "The element-by-element result of "
<< "the bitwise XOR operator^ is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 0 1 0 1 0 1 0 1 0 ).
The initial Right valarray is: ( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise XOR operator^ is the
valarray: ( 1 0 0 3 2 4 7 6 6 9 ).
operator|
Obtiene el OR bit a bit entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado del tipo de elemento.
template <class Type>
valarray<Type>
operator|(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<Type>
operator|(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<Type>
operator|(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el OR bit a bit o un valor especificado del tipo de elemento que va a combinarse OR bit a bit con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el OR bit a bit o un valor especificado del tipo de elemento que va a combinarse OR bit a bit con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son la combinación por elemento de la operación OR bit a bit de left
y right
.
Comentarios
Una operación bit a bit solo puede usarse para manipular los bits de los tipos de datos char
y int
, y sus variantes, y no en float
double
long double
void
bool
u otros tipos de datos más complejos.
El OR bit a bit tiene la misma tabla de verdad que el OR lógico pero se aplica al tipo de datos en el nivel de los bits individuales. Dados los bits b1 y b2, b1 OR b2 es 1 si al menos uno de los bits es 1; 0 si ambos bits son 0. El operator||
OR lógico se aplica en el nivel de elemento, contando todos los valores distintos de cero como true
, y el resultado es una valarray
de valores booleanos. El operator|
OR bit a bit, por el contrario, puede dar lugar a una valarray
de valores distintos de 0 o 1, dependiendo del resultado de la operación bit a bit.
Ejemplo
// valarray_op_bitor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<int> vaLAA ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 1;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = i-1;
cout << "The initial Left valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLAA = ( vaL | vaR );
cout << "The element-by-element result of "
<< "the bitwise OR operator| is the\n"
<< "valarray: ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaLAA [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 1 0 1 0 1 0 1 0 1 0 ).
The initial Right valarray is: ( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise OR operator| is the
valarray: ( 1 0 1 3 3 4 7 6 7 9 ).
operator||
Obtiene el OR lógico entre los elementos correspondientes de dos objetos valarray
de igual tamaño o entre una valarray
y un valor especificado del tipo de elemento valarray
.
template <class Type>
valarray<bool>
operator||(
const valarray<Type>& left,
const valarray<Type>& right);
template <class Type>
valarray<bool>
operator||(
const valarray<Type>& left,
const Type& right);
template <class Type>
valarray<bool>
operator||(
const Type& left,
const valarray<Type>& right);
Parámetros
left
La primera de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el OR lógico o un valor especificado del tipo de elemento que va a combinarse con cada elemento de una valarray
.
right
La segunda de los dos objetos valarray
cuyos elementos respectivos van a combinarse con el OR lógico o un valor especificado del tipo de elemento que va a combinarse con cada elemento de una valarray
.
Valor devuelto
Una valarray
cuyos elementos son de tipo bool
y son la combinación por elemento de la operación OR lógica de left
y right
.
Comentarios
El operator||
OR lógico se aplica en el nivel de elemento, contando todos los valores distintos de cero como true
, y el resultado es una valarray
de valores booleanos. La versión de OR bit a bit, operator|
, por el contrario, puede dar lugar a una valarray
de valores distintos de 0 o 1, dependiendo del resultado de la operación bit a bit.
Ejemplo
// valarray_op_logor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> vaL ( 10 ), vaR ( 10 );
valarray<bool> vaLOR ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL [ i ] = 0;
for ( i = 1 ; i < 10 ; i += 2 )
vaL [ i ] = i-1;
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = 0;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = 0;
cout << "The initial Left valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL [ i ] << " ";
cout << ")." << endl;
cout << "The initial Right valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
vaLOR = ( vaL || vaR );
cout << "The element-by-element result of "
<< "the logical OR operator|| is the\n"
<< "valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaLOR [ i ] << " ";
cout << ")." << endl;
}
The initial Left valarray is: ( 0 0 0 2 0 4 0 6 0 8 ).
The initial Right valarray is: ( 0 0 0 3 0 0 6 0 0 9 ).
The element-by-element result of the logical OR operator|| is the
valarray: ( 0 0 0 1 0 1 1 1 0 1 ).