Namespaces
Variants

operator==,!=,<,<=,>,>= (std::valarray)

From cppreference.net
(Примечание: В данном HTML-фрагменте отсутствует текстовое содержимое для перевода - все элементы `
Определено в заголовке <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 ) ;
**Примечание:** Весь представленный код является C++ кодом и находится внутри тегов ` `, поэтому в соответствии с инструкциями он не был переведен. HTML-разметка и атрибуты сохранены в оригинальном виде.
(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)
` пусты, поэтому перевод не требуется. Структура HTML сохранена в оригинальном виде в соответствии с инструкциями.)

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

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()
{
    // обнулить все отрицательные значения в valarray
    std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2};
    std::cout << "До: ";
    for (auto n : v)
        std::cout << n << ' ';
    std::cout << '\n';
    v[v < 0] = 0;
    std::cout << "После: ";
    for (auto n : v)
        std::cout << n << ' ';
    std::cout << '\n';
    // преобразовать результат valarray<bool> от == в одиночный bool
    std::valarray<int> a = {1, 2, 3};
    std::valarray<int> b = {2, 4, 6};
    std::cout << "2*a == b это " << std::boolalpha
              << (2 * a == b).min() << '\n';
}

Вывод:

До: 1 -1 0 -3 10 -1 -2
После: 1 0 0 0 10 0 0
2*a == b это true

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, являющиеся дефектными, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3074 C++98 T выводится как из скаляра, так и из valarray для (2,3) ,
запрещая вызовы со смешанными типами
выводить T только из valarray