C++ 为什么像计数和擦除这样的无序设置操作会返回一个大小类型?

C++ 为什么像计数和擦除这样的无序设置操作会返回一个大小类型?,c++,hashset,c++-standard-library,unordered-set,C++,Hashset,C++ Standard Library,Unordered Set,显然,它返回的不是严格意义上的布尔值(逻辑上,也就是说,我不是在说实际的类型) 链接页面显示第三个版本的擦除: size_type erase( const key_type& key ); 删除带有键值键的元素 这有一个基调,表明一个给定的键可能不止一个元素。它没有明确说明这一点,但听起来很像。 现在,一个集合的要点,即使是无序的集合,是每个元素都有一次 标准库承认存在bool类型,并将其用于布尔值,如那么,在上述情况下返回size\u type有什么意义?即使存在哈希冲突,容器也应

显然,它返回的不是严格意义上的布尔值(逻辑上,也就是说,我不是在说实际的类型)

链接页面显示第三个版本的擦除:

size_type erase( const key_type& key );
删除带有键值键的元素

这有一个基调,表明一个给定的键可能不止一个元素。它没有明确说明这一点,但听起来很像。
现在,一个集合的要点,即使是无序的集合,是每个元素都有一次


标准库承认存在
bool
类型,并将其用于布尔值,如那么,在上述情况下返回
size\u type
有什么意义?即使存在哈希冲突,容器也应该区分具有不同键的元素,对吗?我还能相信吗?

这可能只是为了让他们可以重复使用无序的多集的措辞。您不必担心散列冲突,除了性能方面的问题,即使每个元素发生冲突,容器仍然是正确的——即使这样的事情会非常缓慢

a、 擦除(k)大小\类型使用键擦除所有元素 相当于k。返回 删除的元素数

b、 count(k)size_type返回带有键的元素数 相当于k


这是因为[23.2.5]。

尽管我也有同样的期望,但听到这句话还是让人感到安慰。如果你能链接到这句话的来源,那会很有帮助。谢谢。只是一个小小的吹毛求疵:该部分似乎只涉及{multi}{set,map}。无序对应项见23.2.5。无序要求实际上应相同。