(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 twoarray
s.
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 | - | array 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 |
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 requireT to model three_way_comparable | requires |