使用 STL 映射/集合/多重集/多重映射,如何查找大于或等于搜索键的第一个值



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

{1, 2, 6, 8}

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

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

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

你想要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.

lower_bound。

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

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

最新更新