集合中的lower_bound(C ++)

时间:2010-10-19 09:27:35

标签: c++ stl

我有一套,我想找到不大于x的最大数字。 (像lower_bound(x)这样的东西)我应该怎么做?有预定义的功能吗?

set<int> myset;
myset.insert(blahblahblah);
int y;
//I want y to be greatest number in myset not greater than x

2 个答案:

答案 0 :(得分:1)

您可以使用upper_bound,如下所示:upper_bound(x)--。上限为您提供大于x的第一个元素,因此您寻找的元素就是之前的元素。如果upper_bound返回begin(),则需要一个特殊情况。

答案 1 :(得分:0)

除了lower_bound之外,还有upper_bound C++ reference

该函数将迭代器返回到严格大于您的第一个值。如果它返回begin(),那么它们都是,否则从生成的迭代器中减去一个以获得你要查找的值。