假设我有一组值,存储在std :: set:
中{1,2,6,8}
我有一个搜索键,比如说3.我想将3放入一个函数并获得大于或等于3的第一个值,在这种情况下我想得到6。
map / set / multimap /和set中提供的find()函数当然会返回此情况的结束迭代器。在这种情况下是否有类似的函数可以返回6?
答案 0 :(得分:12)
是:upper_bound(X)
返回指向大于X
的第一个元素的迭代器。还有一个lower_bound(X)
函数,它返回一个指向不小于X
的第一个元素的迭代器。因此,半开区间[lower_bound(X), upper_bound(X))
中的所有元素将等于X.
答案 1 :(得分: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.
答案 2 :(得分:2)