operator==,!=,<,<=,>,>=,<=>(std::array)
| Definiert in der Header-Datei <array> |
||
| template< class T, std::size_t N > bool operator==( const std::array<T, N>& lhs, |
(1) | (seit C++11) (constexpr seit C++20) |
| template< class T, std::size_t N > bool operator!=( const std::array<T, N>& lhs, |
(2) | (seit C++11) (bis C++20) |
| template< class T, std::size_t N > bool operator<( const std::array<T, N>& lhs, |
(3) | (seit C++11) (bis C++20) |
| template< class T, std::size_t N > bool operator<=( const std::array<T, N>& lhs, |
(4) | (seit C++11) (bis C++20) |
| template< class T, std::size_t N > bool operator>( const std::array<T, N>& lhs, |
(5) | (seit C++11) (bis C++20) |
| template< class T, std::size_t N > bool operator>=( const std::array<T, N>& lhs, |
(6) | (seit C++11) (bis C++20) |
| template< class T, std::size_t N > constexpr synth-three-way-result<T> |
(7) | (seit C++20) |
Vergleicht den Inhalt von zwei arrays.
rhs.begin(), rhs.end(), synth-three-way) aufgerufen würde.-
Tmodelliertthree_way_comparable. -
<ist für Werte des Typs (möglicherweise const-qualifiziert)Tdefiniert, und<ist eine totale Ordnungsrelation.
|
Die Operatoren |
(seit C++20) |
Inhalt |
[bearbeiten] Parameter
| lhs, rhs | - | arrays, deren Inhalt verglichen werden soll |
-T muss die Anforderungen von EqualityComparable erfüllen, um Überladungen (1,2) zu verwenden. | ||
-T muss die Anforderungen von LessThanComparable erfüllen, um Überladungen (3-6) zu verwenden. Die Ordnungsrelation muss eine totale Ordnung herstellen. | ||
[bearbeiten] Rückgabewert
arrays gleich ist, false andernfalls.arrays nicht gleich ist, false andernfalls.[bearbeiten] Komplexität
Linear zur Größe des array.
[bearbeiten] Hinweise
|
Die relationalen Operatoren sind in Bezug auf den `operator<` des Elementtyps definiert. |
(bis C++20) |
|
Die relationalen Operatoren sind in Bezug auf synth-three-way definiert, der, wenn möglich, `operator<=>` und andernfalls `operator<` verwendet. Insbesondere, wenn das Element selbst keinen `operator<=>` bereitstellt, aber implizit in einen dreiwertig vergleichbaren Typ konvertiert werden kann, wird diese Konvertierung anstelle von `operator<` verwendet. |
(seit C++20) |
[bearbeiten] Beispiel
#include <cassert> #include <compare> #include <array> int main() { const std::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 && ""); }
[bearbeiten] Defect reports
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3431 | C++20 | operator<=> erforderte nicht, dass Tthree_way_comparable modelliert. |
requires |