条款45:注意count、find、binary_search、lower_bound、upper_bound和equal_range的区别
对无序区间的查找,我们当然是find,只有当需要统计拷贝的个数,count才有意义。如果对有序区间binary_search告诉你是否有。如果要知道位置,equal_range是一个好的选择。对有序需要的统计当然distance配合equal_range当然要比count的效率高。
1. 期望值是否存在?
(1) 无序区间:find
(2) 有序区间:binary_search
(3) set或者map:count
(4) multiset或者multimap:find
2. 期望值是否存在?如果有,第一个等于这个值的对象在哪里?
(1) 无序区间:find
(2) 有序区间:equal_range
(3) set或者map:count
(4) multiset或者multimap:find或者lower_bound
3. 第一个不在期望值之前的对象在哪里?
(1) 无序区间:find_if
(2) 有序区间:lower_bound
(3) set或者map:lower_bound
(4) multiset或者multimap:lower_bound
4. 第一个在期望值之后的对象在哪里?
(1) 无序区间:find_if
(2) 有序区间:upper_bound
(3) set或者map:upper_bound
(4) multiset或者multimap:upper_bound
5. 有多少对象等于期望值?
(1) 无序区间:count
(2) 有序区间:equal_range,然后distance
(3) set或者map:count
(4) multiset或者multimap:count
6. 等于期望值的所有对象在哪里?
(1) 无序区间:find(迭代)
(2) 有序区间:equal_range
(3) set或者map:equal_range
(4) multiset或者multimap:equal_range
当然,序列容器要用泛型算法,而关联容器用成员函数。
posted on 2007-06-01 09:30
Tempwmk 阅读(569)
评论(0) 编辑 收藏 引用 所属分类:
cpp