Spec-Zone.ru › C++

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)

Сравнивает каждое значение в числовом массиве с другим значением.

1) Возвращает числовой массив bool содержащий элементы, каждый из которых получен путем применения указанного оператора сравнения к соответствующим значениям lhs и rhs.

Поведение является неопределённым, если size() != v.size().

2) Возвращает числовой массив bool содержащий элементы, каждый из которых получен путем применения указанного оператора сравнения к lhsv и соответствующему значению rhs.
3) Возвращает числовой массив 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API