STL 中的上界和下界搜索算法
原文:https://www.studytonight.com/cpp/stl/stl-searching-lower-upper-bound
upper_bound()
返回给定范围内元素的迭代器,该迭代器的比较结果不大于给定值。给定的范围应该已经排序,以便 upper_bound()正常工作。换句话说,它返回给定排序范围内给定元素上限的迭代器。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main ()
{
int input[] = {1,2,2,3,4,4,5,6,7,8,10,45};
vector<int> v(input, input+12);
vector<int>::iterator it1 , it2;
it1 = **upper_bound**(v.begin(), v.end(), 6);
*/* points to eight element in v */*
it2 = **upper_bound**(v.begin(), v.end(), 4);
*/* points to seventh element in v */*
}
lower_bound
方法
lower_bound()
返回给定范围内元素的迭代器,该迭代器不小于给定值。给定的范围应该已经排序,以便 lower_bound()正常工作。换句话说,它返回给定排序范围内给定元素下限的迭代器。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main ()
{
int input[] = {1,2,2,3,4,4,5,6,7,8,10,45};
vector<int> **v**(input,input+12);
vector<int>::iterator it1 , it2;
it1 = **lower_bound**(**v**.begin(), **v**.end(), 4);
*/* points to fifth element in v */*
it2 = **lower_bound** (**v**.begin(), **v**.end(), 10);
*/* points to second last element in v */*
}