(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
Member functions | |||||||||||||||||||||||||||
Non-member functions | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
Deduction guides(C++17) |
Defined in header <map> | ||
template<class Key,class T,class Compare,class Alloc> bool operator==(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (1) | (constexpr since C++26) |
template<class Key,class T,class Compare,class Alloc> bool operator!=(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (2) | (until C++20) |
template<class Key,class T,class Compare,class Alloc> bool operator<(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (3) | (until C++20) |
template<class Key,class T,class Compare,class Alloc> bool operator<=(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (4) | (until C++20) |
template<class Key,class T,class Compare,class Alloc> bool operator>(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (5) | (until C++20) |
template<class Key,class T,class Compare,class Alloc> bool operator>=(conststd::multimap<Key, T, Compare, Alloc>& lhs, | (6) | (until C++20) |
template<class Key,class T,class Compare,class Alloc> /* see below */ | (7) | (since C++20) (constexpr since C++26) |
Compares the contents of twomultimap
s.
Letvalue_type
be the value type ofmultimap
(i.e.,typename multimap::value_type):
returnstd::distance(lhs.begin(), lhs.end()) | (until C++14) |
returnstd::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end()); | (since C++14) |
value_type
is notEqualityComparable, the behavior is undefined.value_type
is notLessThanComparable.
rhs.begin(), rhs.end(),
synth-three-way).T
does not modelthree_way_comparable
.value_type
.The | (since C++20) |
Contents |
lhs, rhs | - | multimap s whose contents to compare |
Operator | lhs andrhs are equal | lhs is lexicographically greater | rhs is lexicographically greater |
---|---|---|---|
operator== | true | false | |
operator!= | false | true | |
operator< | false | false | true |
operator<= | true | ||
operator> | false | true | false |
operator>= | true | ||
operator<=> | a value equal to0 | a value greater then0 | a value less than0 |
multimap
.multimap
.The relational operators are defined in terms of | (until C++20) |
The relational operators are not defined. The rewritten candidateoperator<=> will be selected by overload resolution. operator<=> uses | (since C++20) |
These non-member comparison operators do not useCompare
to compare elements.
#include <cassert>#include <compare>#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&&"");}
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 requireT to model three_way_comparable | requires |