Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | container‎ | deque
 
 
 
 
Defined in header <deque>
template< class T, class Alloc >

bool operator==( const std::deque<T,Alloc>& lhs,

                 const std::deque<T,Alloc>& rhs );
(1)
template< class T, class Alloc >

bool operator!=( const std::deque<T,Alloc>& lhs,

                 const std::deque<T,Alloc>& rhs );
(2) (until C++20)
template< class T, class Alloc >

bool operator<( const std::deque<T,Alloc>& lhs,

                const std::deque<T,Alloc>& rhs );
(3) (until C++20)
template< class T, class Alloc >

bool operator<=( const std::deque<T,Alloc>& lhs,

                 const std::deque<T,Alloc>& rhs );
(4) (until C++20)
template< class T, class Alloc >

bool operator>( const std::deque<T,Alloc>& lhs,

                const std::deque<T,Alloc>& rhs );
(5) (until C++20)
template< class T, class Alloc >

bool operator>=( const std::deque<T,Alloc>& lhs,

                 const std::deque<T,Alloc>& rhs );
(6) (until C++20)
template< class T, class Alloc >

/* see below */ operator<=>( const std::deque<T,Alloc>& lhs,

                             const std::deque<T,Alloc>& rhs );
(7) (since C++20)

Compares the contents of two deques.

1-2) Checks if the contents of lhs and rhs are equal, that is, they have the same number of elements and each element in lhs compares equal with the element in rhs at the same position.
3-6) Compares the contents of lhs and rhs lexicographically. The comparison is performed by a function equivalent to std::lexicographical_compare.
7) Compares the contents of lhs and rhs lexicographically. The comparison is performed as if by calling std::lexicographical_compare_three_way on two deques with a function object performing synthesized three-way comparison (see below). The return type is same as the result type of synthesized three-way comparison.

Given two const E lvalues lhs and rhs as left hand operand and right hand operand respectively (where E is T), synthesized three-way comparison is defined as:

  • if std::three_way_comparable_with<E, E> is satisfied, equivalent to lhs <=> rhs;
  • otherwise, if comparing two const E lvalues by operator< is well-formed and the result type satisfies boolean-testable, equivalent to
lhs < rhs ? std::weak_ordering::less :
rhs < lhs ? std::weak_ordering::greater :
            std::weak_ordering::equivalent
  • otherwise, synthesized three-way comparison is not defined, and operator<=> does not participate in overload resolution.
The behavior of operator<=> is undefined if three_way_comparable_with or boolean-testable is satisfied but not modeled, or operator< is used but E and < do not establish total order.

[edit] Parameters

lhs, rhs - deques whose contents to compare
-
T must meet the requirements of EqualityComparable in order to use overloads (1-2).
-
T must meet the requirements of LessThanComparable in order to use overloads (3-6). The ordering relation must establish total order.

[edit] Return value

1) true if the contents of the deques are equal, false otherwise
2) true if the contents of the deques are not equal, false otherwise
3) true if the contents of the lhs are lexicographically less than the contents of rhs, false otherwise
4) true if the contents of the lhs are lexicographically less than or equal the contents of rhs, false otherwise
5) true if the contents of the lhs are lexicographically greater than the contents of rhs, false otherwise
6) true if the contents of the lhs are lexicographically greater than or equal the contents of rhs, false otherwise
7) std::strong_ordering::less if the contents of the lhs are lexicographically less than the contents of rhs;
std::strong_ordering::greater if the contents of the lhs are lexicographically greater than the contents of rhs;
std::partial_ordering::unordered if the first pair of non-equivalent elements in lhs and rhs are unordered;
std::strong::equal otherwise.

[edit] Complexity

1-2) Constant if lhs and rhs are of different size, otherwise linear in the size of the deque
3-7) Linear in the size of the deque