11

它真正检查的是 contains() 而不是出现次数的计数,对吧?也不允许重复,所以 contains() 不是比 count() 更好的名称吗?

4

3 回答 3

14

这是为了使其与其他容器类保持一致,因为多态性的一大优点是能够使用相同的 API 处理不同的类。

确实返回了计数。一个集合的计数只能是零或一这一事实不会改变这一方面。

它与一个集合对象并没有根本的不同,它同时只允许每个“值”的两个东西。在这种情况下,它将返回零、一或二的计数,但它仍然是计数,与集合相同。

需要此标准的相关部分是讨论C++11 23.2.4关联容器setmultiset和。表 102 包含对这些关联容器的要求,超出了对“常规”容器的要求,下面的解释如下:mapmultimapcount

size_type a.count(k)- 返回键等于 的元素的数量k。复杂度为log(a.size()) + a.count(k)

于 2013-05-14T04:13:18.780 回答
4

所有关联容器必须满足§23.2.4/8 表 102-关联容器要求中列出的要求。其中之一是他们实现a.count(k)

返回键等于 k ​​的元素数

所以原因是在所有关联容器之间有一个一致的接口。例如,在编写必须与任何关联容器一起使用的通用函数模板时,这种一致性将非常重要。

于 2013-05-14T04:17:05.983 回答
-2

这是容器上的标准操作,返回匹配元素的数量。在列表之类的东西中,这非常有意义。碰巧的是,在一个集合中,一个元素只能出现一次,因此count永远不会返回大于 1 的值。

于 2013-05-14T04:13:26.630 回答