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могут быть построены из типа замены. - Для каждой функции, принимающей const std::valarray<T>& кроме
begin()иend()(с C++11), идентичные функции, принимающие типы замены, должны быть добавлены; - Для каждой функции, принимающей два const std::valarray<T>& аргумента, идентичные функции, принимающие любую комбинацию const std::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/w/cpp/numeric/valarray/operator_cmp