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) | (до C++20) |
Сравнивает содержимое двух неупорядоченных контейнеров.
Содержимое двух неупорядоченных контейнеров lhs и rhs считается равным, если выполняются следующие условия:
- lhs. size ( ) == rhs. size ( ) .
-
каждая группа эквивалентных элементов
[lhs_eq1,lhs_eq2), полученная из lhs. equal_range ( lhs_eq1 ) , имеет соответствующую группу эквивалентных элементов в другом контейнере[rhs_eq1,rhs_eq2), полученную из rhs. equal_range ( rhs_eq1 ) , которая обладает следующими свойствами:
-
- std:: distance ( lhs_eq1, lhs_eq2 ) == std:: distance ( rhs_eq1, rhs_eq2 ) .
- std:: is_permutation ( lhs_eq1, lhs_eq2, rhs_eq1 ) == true .
Поведение не определено, если
Key
не является
EqualityComparable
.
Поведение также не определено, если
hash_function()
и
key_eq()
имеют
(до C++20)
key_eq()
имеет
(начиная с C++20)
разное поведение для
lhs
и
rhs
или если
operator
==
для
Key
не является уточнением разделения на группы эквивалентных ключей, введенного
key_eq()
(то есть, если два элемента, которые сравниваются как равные с помощью
operator
==
попадают в разные разделы).
|
Оператор
|
(since C++20) |
Параметры
| lhs, rhs | - | неупорядоченные контейнеры для сравнения |
Возвращаемое значение
Сложность
Пропорционально
N
вызовам
operator
==
для
value_type
, вызовам предиката, возвращаемого
key_eq
, и вызовам хеш-функции, возвращаемой
hash_function
, в среднем случае; пропорционально
N
2
в худшем случае, где
N
- размер контейнера.