如何在STL设置下找到小于搜索键的第一个值?

时间:2014-04-11 11:34:26

标签: c++ stl

例如,我在std::set中设置了一组值:

{1, 2, 3, 5, 6}

一个搜索键,让它为4,我想找到第一个val。少于搜索键,在这种情况下3,怎么做?

在Java中,greater()中有lower()TreeSet,{{1}}

2 个答案:

答案 0 :(得分:18)

只需找到该密钥的lower_bound,然后减去一次。

set<int> a;
set<int>::iterator it = a.lower_bound(5);
if (it != a.begin()) {
  it--;
  cout << *it << endl;
} else {
  cout << "No smaller element found!" << endl;
}

您可以找到完整的示例here

答案 1 :(得分:2)

您可以使用lower_bound,然后返回一个,即

auto it = set.lower_bound(4);
if(it != set.begin())
{
  --it;
}
else
{
   //Add error handling
}