二进制搜索以在STL C ++ multiset中找到更少或相等的值

时间:2018-05-21 18:41:28

标签: c++ binary-search multiset

我们有STL(标准模板库)多重集,我们希望实现一个二进制搜索,它将为我们提供第一个与某个值相比较小或相等的元素x

从这篇文章:lower_bound == upper_bound,我们看到我们可以使用标准的lower_bound和upper_bound来查找与x相比更大的值,那么查找更小或相等的内容。

有可能做这样的事吗?

1 个答案:

答案 0 :(得分:2)

只需使用upper_bound的{​​{1}}成员函数即可。 multiset将返回比您要搜索的值更大的第一个元素。这意味着之前的迭代器将是第一个等于或小于该值的元素。所以在

upper_bound

它会打印int main() { std::multiset<int> ms = {1,1,2,2,3,3,4,4,5,5}; auto end = ms.upper_bound(3); for (auto it = ms.begin(); it != end; ++it) std::cout << *it; } ,因为这是所有小于或等于112233的元素。

当然,您需要确保3不会返回upper_bound,这意味着没有任何元素小于或等于您要搜索的内容。