如何计算满足lower_bound(42),upper_bound(137)的元素数量 从这段代码??
accumulate(values.lower_bound(42), values.upper_bound(137), 0);
答案 0 :(得分:7)
accumulate
不计算,累积。你当然可以积累1而不是元素,但这是相反的。直接答案是std::distance
,它给出了两个迭代器之间的元素数量(即在你指定的下限和上限之间):
auto result = std::distance(values.lower_bound(42), values.upper_bound(137));
答案 1 :(得分:3)
我认为您正在寻找的解决方案是std::count_if
标题中的algorithm
。如果你有一个容器cont
,你可以像这样使用它:
bool is_in_range(int x){
return 42 <= x && x >= 137;
}
std::count_if(cont.begin(), cont.end(), is_in_range);