4

假设我有一组值,存储在 std::set 中:

{1、2、6、8}

我有一个搜索键,比如 3。我想将 3 放入一个函数并获得大于或等于 3 的第一个值,在这种情况下,我想获得 6。

map/set/multimap/and set 中提供的 find() 函数当然会返回这种情况的结束迭代器。在这种情况下,是否有类似的函数可以返回 6?

4

3 回答 3

12

是:upper_bound(X)返回一个迭代器,指向大于 的第一个元素X。还有一个lower_bound(X)函数返回一个迭代器,该迭代器指向不小于 的第一个元素X。因此,半开区间中的所有元素[lower_bound(X), upper_bound(X))都将等于 X。

于 2008-10-06T22:04:10.913 回答
3

您需要upper_bound函数。

map<int, int> mymap = { 1,2,6,8 };
map<int,int>::iterator i = mymap.upper_bound(3); // returns an iterator to the '6' element.
于 2008-10-06T22:03:37.843 回答
2

下限

糟糕,我的意思是lower_bound,成员函数,而不是算法。

如果集合中没有任何内容大于或等于您的搜索项,它将返回 end()。

于 2008-10-06T22:03:40.963 回答