(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 types | ||||||||||||||||||||||||||
| Member functions | ||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||
| Helper classes | ||||||||||||||||||||||||||
| Deduction guides(C++17) | ||||||||||||||||||||||||||
Defined in header <array> | ||
template<class T,std::size_t N> bool operator==(conststd::array<T, N>& lhs, | (1) | (since C++11) (constexpr since C++20) |
template<class T,std::size_t N> bool operator!=(conststd::array<T, N>& lhs, | (2) | (since C++11) (until C++20) |
template<class T,std::size_t N> bool operator<(conststd::array<T, N>& lhs, | (3) | (since C++11) (until C++20) |
template<class T,std::size_t N> bool operator<=(conststd::array<T, N>& lhs, | (4) | (since C++11) (until C++20) |
template<class T,std::size_t N> bool operator>(conststd::array<T, N>& lhs, | (5) | (since C++11) (until C++20) |
template<class T,std::size_t N> bool operator>=(conststd::array<T, N>& lhs, | (6) | (since C++11) (until C++20) |
template<class T,std::size_t N> constexpr/* see below */ | (7) | (since C++20) |
Compares the contents of twoarrays.
Letvalue_type be the value type ofarray (i.e.,typename array::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 | - | arrays 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 |
Linear in the size of thearray.
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) |
#include <cassert>#include <compare>#include <array> int main(){conststd::array a{1,2,3}, b{1,2,3}, c{7,8,9}; 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 |