operator==,!=(std::unordered_set)
| template< class Key, class Hash, class KeyEqual, class Alloc > bool operator==( const std::unordered_set<Key, Hash, KeyEqual, Alloc>& lhs, |
(1) | |
| template< class Key, class Hash, class KeyEqual, class Alloc > bool operator!=( const std::unordered_set<Key, Hash, KeyEqual, Alloc>& lhs, |
(2) | (bis C++20) |
Vergleicht die Inhalte von zwei ungeordneten Containern.
Die Inhalte von zwei ungeordneten Containern lhs und rhs sind gleich, wenn die folgenden Bedingungen erfüllt sind:
- lhs.size() == rhs.size().
- jede Gruppe äquivalenter Elemente
[lhs_eq1,lhs_eq2), die aus lhs.equal_range(lhs_eq1) erhalten wird, hat eine entsprechende Gruppe äquivalenter Elemente im anderen Container[rhs_eq1,rhs_eq2), die aus rhs.equal_range(rhs_eq1) erhalten wird und die folgenden Eigenschaften aufweist:
- std::distance(lhs_eq1, lhs_eq2) == std::distance(rhs_eq1, rhs_eq2).
- std::is_permutation(lhs_eq1, lhs_eq2, rhs_eq1) == true.
Das Verhalten ist undefiniert, wenn Key nicht EqualityComparable ist.
Das Verhalten ist auch undefiniert, wenn hash_function() und key_eq() nicht das gleiche Verhalten für lhs und rhs aufweisen oder wenn operator== für Key keine Verfeinerung der Partition in äquivalente Schlüsselgruppen ist, die durch key_eq() eingeführt wurde (d. h. wenn zwei Elemente, die mit operator== gleich verglichen werden, in verschiedene Partitionen fallen).
|
Der Operator |
(seit C++20) |
[bearbeiten] Parameter
| lhs, rhs | - | Zu vergleichende ungeordnete Container. |
[bearbeiten] Rückgabewert
[bearbeiten] Komplexität
Proportionale zu *N* Aufrufen von operator== für value_type, Aufrufe des von key_eq zurückgegebenen Prädikats und Aufrufe des von hash_function zurückgegebenen Hashers im Durchschnittsfall, im schlimmsten Fall quadratisch proportional zu *N*2, wobei *N* die Größe des Containers ist.