Spec-Zone.ru › C++

operator==,!=(std::unordered_multimap)

template< class Key, class T, class Hash, class KeyEqual, class Alloc >
bool operator==( const std::unordered_multimap<Key, T, Hash, KeyEqual, Alloc>& lhs,
                 const std::unordered_multimap<Key, T, Hash, KeyEqual, Alloc>& rhs );
(1)
template< class Key, class T, class Hash, class KeyEqual, class Alloc >
bool operator!=( const std::unordered_multimap<Key, T, Hash, KeyEqual, Alloc>& lhs,
                 const std::unordered_multimap<Key, T, Hash, KeyEqual, Alloc>& rhs );
(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 или T не являются сравнимыми на равенство.

Поведение также не определено, если hash_function() и key_eq()(до C++20)key_eq()(начиная с C++20) не ведёт себя одинаково для lhs и rhs или если operator== для Key не является уточнением разбиения на группы эквивалентных ключей, введённого с помощью key_eq() (то есть если два элемента, сравниваемые как равные с помощью operator==, попадают в разные группы).

Оператор != синтезируется из operator==.

(начиная с C++20)

Параметры

lhs, rhs - неупорядоченные контейнеры для сравнения

Возвращаемое значение

1) true, если содержимое контейнеров равно, и false в противном случае.
2) true, если содержимое контейнеров не равно, и false в противном случае.

Сложность

В среднем пропорциональна числу вызовов operator== для value_type, вызовов предиката, возвращаемого key_eq, и вызовов хешера, возвращаемого hash_function, равному ΣSi2, где S — размер i-й группы эквивалентных ключей. В худшем случае пропорциональна N2, где N — размер контейнера. В среднем сложность становится пропорциональной N, если элементы внутри каждой группы эквивалентных ключей расположены в одинаковом порядке (что происходит, когда контейнеры являются копиями друг друга).

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/unordered_multimap/operator_cmp

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API