使用STL map / set / multiset / multimap,如何找到大于或等于搜索键的第一个值?

StackOverflow https://stackoverflow.com/questions/176376

  •  05-07-2019
  •  | 
  •  

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

{1,2,6,8}

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

map / set / multimap /和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()。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top