Namespaces
Variants

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

cppreference.net에서
 
 
 
 
헤더에 정의됨 <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()
{
    // valarray에서 모든 음수를 0으로 설정
    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';
    // == 연산의 valarray<bool> 결과를 단일 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 모두에서 추론되어
혼합 타입 호출이 허용되지 않음
T 를 valarray 에서만 추론