По-видимому,unordered_set::erase
иunordered_set::count
вернуть что-то, что не является строго логическим (логически, то есть я не говорю о фактическом типе ).
На связанной странице указана третья версия стирания :
size_type erase( const key_type& key );
Removes the elements with the key value key
. У этого есть тон, который предполагает, что может быть более одного элемента с данным ключом. Об этом прямо не говорится, но очень похоже.
Теперь смысл множества, даже неупорядоченного, состоит в том, чтобы каждый элемент был один раз.
Стандартная библиотека признает существование типа bool
и использует его для логических значений, таких какunordered_set::empty()
. Итак, какой смысл возвращать size_type
в случаях выше? Даже несмотря на коллизии хэшей, контейнер должен различать элементы с разными ключами, верно? Могу ли я все еще полагаться на это?