operator==,!=,<,<=,>,>=(std::valarray)
Определено в заголовочном файле <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) |
Сравнивает каждое значение в числовом массиве с другим значением.
bool, содержащий элементы, каждый из которых получается применением указанного оператора сравнения к соответствующим значениям lhs и rhs.Поведение не определено, если size() != v.size().
bool, содержащий элементы, каждый из которых получается применением указанного оператора сравнения к lhsv и соответствующему значению rhs.bool, содержащий элементы, каждый из которых получается применением указанного оператора сравнения к соответствующему значению lhs и rhsv.Параметры
| lhs, rhs | - | числовые массивы для сравнения |
| lhsv, rhsv | - | значения для сравнения с каждым элементом числового массива |
Возвращаемое значение
Числовой массив bool, содержащий результаты сравнения соответствующих элементов.
Исключения
Может выбрасывать исключения, определяемые реализацией.
Примечания
Каждый из операторов может быть инстанцирован только при выполнении следующих требований:
- Указанный оператор применим к типу
T. - Результат может быть однозначно преобразован в
bool.
Функция может быть реализована с типом возвращаемого значения, отличным от std::valarray. В этом случае тип-замена обладает следующими свойствами:
- Предоставлены все функции-члены const типа
std::valarray. -
std::valarray,std::slice_array,std::gslice_array,std::mask_arrayиstd::indirect_arrayмогут быть сконструированы из типа-замены. - Для каждой функции, принимающей аргумент типа conststd::valarray<T>& кроме
begin()иend()(начиная с C++11), должны быть добавлены идентичные функции, принимающие типы-замены; - Для каждой функции, принимающей два аргумента типа conststd::valarray<T>&, должны быть добавлены идентичные функции, принимающие все комбинации аргументов типа conststd::valarray<T>& и типов-замен.
- Тип возвращаемого значения не добавляет более двух уровней вложенности шаблонов относительно типа самого глубоко вложенного аргумента.
Пример
#include <iostream>
#include <valarray>
int main()
{
// zero all negatives in a valarray
std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2};
std::cout << "Before: ";
for (auto n : v)
std::cout << n << ' ';
std::cout << '\n';
v[v < 0] = 0;
std::cout << "After: ";
for (auto n : v)
std::cout << n << ' ';
std::cout << '\n';
// convert the valarray<bool> result of == to a single bool
std::valarray<int> a = {1, 2, 3};
std::valarray<int> b = {2, 4, 6};
std::cout << "2*a == b is " << std::boolalpha
<< (2 * a == b).min() << '\n';
}
Вывод:
Before: 1 -1 0 -3 10 -1 -2 After: 1 0 0 0 10 0 0 2*a == b is true
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 3074 | C++98 |
T выводится как из скалярного значения, так и из valarray для (2,3),что запрещает вызовы со смешанными типами | выводить T только из valarray |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/valarray/operator_cmp