container.count(val)
- 给出" val"的频率。在容器中。为什么计数需要遍历每个值" val"在有序集。我的观点是有序的集合/映射,元素将按顺序排列,因此我们甚至可以在到达结束之前获得最终的计数值。据我所知,这并不适用于其他容器(列表,矢量等)。
示例: -
set<int, less<int>> s{1, 2, 3, 4, 5, 6};
int cnt = s.count(2); // return 1
由于set / map可以计为0或1,一旦我达到2,它应该打破循环而不是遍历直到结束。此外,编译器知道比较器(更少或更多)。对于multiset / multimap也可以做同样的事情,唯一的区别是count可以是> 1。
答案 0 :(得分:2)
来自n4618,§23.2.6,第848页
表达:
b.count(k)
退货类型:size_type
断言/注释/前/后条件:返回元素的数量,其键数等于k
复杂性:log(b.size()) + b.count(k)
这意味着,根据定义,在决定k
的计数是什么之前,这些函数不能计算容器的每个元素。