>假设我有一组值,存储在 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()。