operator==,!=,<,<=,>,>=,<=>(std::multimap)
From cppreference.com
| 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 > synth-three-way-result<T> |
(7) | (since C++20) |
Compares the contents of two multimaps.
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. This comparison ignores the
multimap's ordering Compare.7) Compares the contents of lhs and rhs lexicographically. The comparison is performed as if by calling std::lexicographical_compare_three_way(lhs.begin(), lhs.end(),
rhs.begin(), rhs.end(), synth-three-way).This comparison ignores the multimap's ordering Compare. If none of the following conditions is satisfied, the behavior is undefined:
-
Tmodelsthree_way_comparable. -
<is defined for values of type (possibly const-qualified)T, and<is a total ordering relationship.
|
The |
(since C++20) |
Contents |
[edit] Parameters
| lhs, rhs | - | multimaps 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.
| ||
[edit] Return value
1) true if the contents of the
multimaps are equal, false otherwise.2) true if the contents of the
multimaps 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 to 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 to the contents of rhs, false otherwise.
7) The relative order of the first pair of non-equivalent elements in lhs and rhs if there are such elements, lhs.size() <=> rhs.size() otherwise.
[edit] Complexity
1,2) Constant if lhs and rhs are of different size, otherwise linear in the size of the
multimap.3-7) Linear in the size of the
multimap.[edit] Example
Run this code
#include <cassert> #include <map> int main() { std::multimap<int, char> a{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::multimap<int, char> b{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::multimap<int, char> c{{7, 'Z'}, {8, 'Y'}, {9, 'X'}, {10, 'W'}}; assert ("" "Compare equal containers:" && (a != b) == false && (a == b) == true && (a < b) == false && (a <= b) == true && (a > b) == false && (a >= b) == true && (a <=> b) != std::weak_ordering::less && (a <=> b) != std::weak_ordering::greater && (a <=> b) == std::weak_ordering::equivalent && (a <=> b) >= 0 && (a <=> b) <= 0 && (a <=> b) == 0 && "Compare non equal containers:" && (a != c) == true && (a == c) == false && (a < c) == true && (a <= c) == true && (a > c) == false && (a >= c) == false && (a <=> c) == std::weak_ordering::less && (a <=> c) != std::weak_ordering::equivalent && (a <=> c) != std::weak_ordering::greater && (a <=> c) < 0 && (a <=> c) != 0 && (a <=> c) <= 0 && ""); }
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3431 | C++20 | operator<=> did not require Tto model three_way_comparable
|
requires |

