operator==,!=,<,<=,>,>=,<=>(std::multimap)
Defined in header <map>
|
||
template< class Key, class T, class Compare, class Alloc > bool operator==( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(1) | |
template< class Key, class T, class Compare, class Alloc > bool operator!=( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(2) | (until C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator<( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(3) | (until C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator<=( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(4) | (until C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator>( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(5) | (until C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator>=( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(6) | (until C++20) |
template< class Key, class T, class Compare, class Alloc > /* see below */ operator<=>( const std::multimap<Key,T,Compare,Alloc>& lhs, |
(7) | (since C++20) |
Compares the contents of two multimap
s.
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.lhs
and rhs
lexicographically. The comparison is performed by a function equivalent to std::lexicographical_compare. This comparison ignores the multimap
's ordering Compare.lhs
and rhs
lexicographically. The comparison is performed as if by calling std::lexicographical_compare_three_way on two multimap
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 comparison. This comparison ignores the multimap
's ordering Compare.
Given two const E lvalues lhs
and rhs
as left hand operand and right hand operand respectively (where E
is std::pair<const Key, 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.
three_way_comparable_with
or boolean-testable
is satisfied but not modeled, or operator< is used but E
and <
do not establish a total order.
The |
(since C++20) |
Parameters
lhs, rhs | - | multimap s whose contents to compare
|
-T, Key must meet the requirements of EqualityComparable in order to use overloads (1-2).
| ||
-Key must meet the requirements of LessThanComparable in order to use overloads (3-6). The ordering relation must establish total order.
|
Return value
multimap
s are equal, false otherwisemultimap
s are not equal, false otherwiselhs
are lexicographically less than the contents of rhs
, false otherwiselhs
are lexicographically less than or equal to the contents of rhs
, false otherwiselhs
are lexicographically greater than the contents of rhs
, false otherwiselhs
are lexicographically greater than or equal to the contents of rhs
, false otherwiselhs
and rhs
if there are such elements, lhs.size() <=> rhs.size() otherwise.Complexity
lhs
and rhs
are of different size, otherwise linear in the size of the multimap
multimap
Example
#include <iostream> #include <map> int main() { std::multimap<int, char> alice{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::multimap<int, char> bob{{7, 'Z'}, {8, 'Y'}, {9, 'X'}, {10, 'W'}}; std::multimap<int, char> eve{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::cout << std::boolalpha; // Compare non equal containers std::cout << "alice == bob returns " << (alice == bob) << '\n'; std::cout << "alice != bob returns " << (alice != bob) << '\n'; std::cout << "alice < bob returns " << (alice < bob) << '\n'; std::cout << "alice <= bob returns " << (alice <= bob) << '\n'; std::cout << "alice > bob returns " << (alice > bob) << '\n'; std::cout << "alice >= bob returns " << (alice >= bob) << '\n'; std::cout << '\n'; // Compare equal containers std::cout << "alice == eve returns " << (alice == eve) << '\n'; std::cout << "alice != eve returns " << (alice != eve) << '\n'; std::cout << "alice < eve returns " << (alice < eve) << '\n'; std::cout << "alice <= eve returns " << (alice <= eve) << '\n'; std::cout << "alice > eve returns " << (alice > eve) << '\n'; std::cout << "alice >= eve returns " << (alice >= eve) << '\n'; }
Output:
alice == bob returns false alice != bob returns true alice < bob returns true alice <= bob returns true alice > bob returns false alice >= bob returns false alice == eve returns true alice != eve returns false alice < eve returns false alice <= eve returns true alice > eve returns false alice >= eve returns true