显然,unordered_set::erase
和unordered_set::count
返回的内容不是严格的布尔值(逻辑上,也就是说,我不是在谈论实际类型)。
链接页面读取第三版擦除:
size_type erase( const key_type& key );
使用键值键
删除元素
这有一个基调,表明可能不只有一个元素与给定的键。它没有明确说明这一点,但听起来很多 现在,集合的一个点,即使是无序集合,也就是让每个元素都有一次。
标准库确认存在bool
类型,并将其用于布尔值,如unordered_set::empty()
。 那么,在上述案例中返回size_type
的重点是什么?即使存在哈希冲突,容器也应该区分具有不同键的元素,对吧?我还能依靠吗?
答案 0 :(得分:6)
a.erase(k)size_type用键删除所有元素 相当于k。返回 删除的元素数量。
b.count(k)size_type返回带键的元素数 相当于k。
这是因为unordered associative container requirements [23.2.5]。
答案 1 :(得分:1)
可能只是为了让他们可以重复使用unordered_multiset
中的措辞。您不必担心散列冲突,除了性能方面,即使每个元素发生碰撞,容器仍然是正确的 - 即使这样的事情会非常缓慢。