Difference between revisions of "Template:cpp/container/operator cmp"
From cppreference.com
m |
m |
||
Line 52: | Line 52: | ||
|array|vector=constexpr /* see below */ | |array|vector=constexpr /* see below */ | ||
|#default=/* see below */}} operator<=>( const std::{{{1}}}<{{#var:types_short}}>& lhs, | |#default=/* see below */}} operator<=>( const std::{{{1}}}<{{#var:types_short}}>& lhs, | ||
− | + | const std::{{{1}}}<{{#var:types_short}}>& rhs ); | |
}} | }} | ||
{{dcl end}} | {{dcl end}} |
Revision as of 08:47, 24 February 2020
Defined in header [[cpp/header/{{{1}}}|<{{{1}}}>]]
|
||
template< ... > bool operator==( const std::{{{1}}}<...>& lhs, |
(1) | |
template< ... > bool operator!=( const std::{{{1}}}<...>& lhs, |
(2) | (until C++20) |
template< ... > bool operator<( const std::{{{1}}}<...>& lhs, |
(3) | (until C++20) |
template< ... > bool operator<=( const std::{{{1}}}<...>& lhs, |
(4) | (until C++20) |
template< ... > bool operator>( const std::{{{1}}}<...>& lhs, |
(5) | (until C++20) |
template< ... > bool operator>=( const std::{{{1}}}<...>& lhs, |
(6) | (until C++20) |
template< ... > /* see below */ operator<=>( const std::{{{1}}}<...>& lhs, |
(7) | (since C++20) |
Compares the contents of two {{{1}}}
s.
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 {{{1}}}
s with a function object performing synthesized three-way comparison (see below). The return type is same as the result type of synthesized three-way comaprison.
Given two const T lvalues lhs
and rhs
as left hand operand and right hand operand respectively, synthesized three-way comparison is defined as:
- if std::three_way_comparable_with<T, T> is satisfied, equivalent to lhs <=> rhs;
- otherwise, if comparing two const T 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.
three_way_comparable_with
or boolean-testable
is satisfied but not modeled.Parameters
lhs, rhs | - | {{{1}}} s whose contents to compare
|
Return value
1) true if the contents of the
{{{1}}}
s are equal, false otherwise2) true if the contents of the
{{{1}}}
s are not equal, false otherwise3) true if the contents of the
lhs
are lexicographically less than the contents of rhs
, false otherwise4) true if the contents of the
lhs
are lexicographically less than or equal the contents of rhs
, false otherwise5) true if the contents of the
lhs
are lexicographically greater than the contents of rhs
, false otherwise6) true if the contents of the
lhs
are lexicographically greater than or equal the contents of rhs
, false otherwise7) std::strong_ordering::less if the contents of the
std::strong_ordering::greater if the contents of the
std::partial_ordering::unordered if the first pair of non-equivalent elements in
std::strong::equal otherwise.
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.
Complexity
1-2) Constant if
lhs
and rhs
are of different size, otherwise linear in the size of the {{{1}}}
3-7) Linear in the size of the
{{{1}}}