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 могут быть сконструированы из типа-замены.
  • Для каждой функции, принимающей аргумент типа 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

Spec-Zone.ru

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