(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 <set> | ||
template<class Key,class Compare,class Alloc> bool operator==(conststd::multiset<Key, Compare, Alloc>& lhs, | (1) | (constexpr since C++26) |
template<class Key,class Compare,class Alloc> bool operator!=(conststd::multiset<Key, Compare, Alloc>& lhs, | (2) | (until C++20) |
template<class Key,class Compare,class Alloc> bool operator<(conststd::multiset<Key, Compare, Alloc>& lhs, | (3) | (until C++20) |
template<class Key,class Compare,class Alloc> bool operator<=(conststd::multiset<Key, Compare, Alloc>& lhs, | (4) | (until C++20) |
template<class Key,class Compare,class Alloc> bool operator>(conststd::multiset<Key, Compare, Alloc>& lhs, | (5) | (until C++20) |
template<class Key,class Compare,class Alloc> bool operator>=(conststd::multiset<Key, Compare, Alloc>& lhs, | (6) | (until C++20) |
template<class Key,class Compare,class Alloc> /* see below */ | (7) | (since C++20) (constexpr since C++26) |
Compares the contents of twomultisets.
Letvalue_type be the value type ofmultiset (i.e.,typename multiset::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 | - | multisets 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 |
multiset.multiset.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 <set> int main(){conststd::multiset a{1,2,3}, b{1,2,3}, c{7,8,9,10}; 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 requireTto model three_way_comparable | requires |