operator==,!=(std::unordered_map)
| template< class Key, class T, class Hash, class KeyEqual, class Alloc > bool operator==( const std::unordered_map<Key, T, Hash, KeyEqual, Alloc>& lhs, |
(1) | |
| template< class Key, class T, class Hash, class KeyEqual, class Alloc > bool operator!=( const std::unordered_map<Key, T, 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 oder T nicht EqualityComparable sind.
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
Proportional zu N Aufrufen von operator== für value_type, Aufrufe der von key_eq zurückgegebenen Prädikatfunktion und Aufrufe der von hash_function zurückgegebenen Hash-Funktion, im Durchschnitt proportional zu N, im schlechtesten Fall proportional zu N2, wobei N die Größe des Containers ist.