1、功能作用
lower_bound 的作用是在已经排好序的数组中返回第一个大于等于(不小于)你所给定的值。
比如,在vector元素中,有1,2,3,4,4,4,5.对应的下标是 0,1,2,3,4,5,6
通过lower_bound 查找4,那么返回的是下标3.
2、使用方法
首先看看lower_bound的函数原型有2个版本。
版本一:
template
<
class
ForwardIterator,
class
T>
ForwardIterator lower_bound(ForwardIterator first,ForwardIterator last,
const
T &val);
这个版本是对常用的类型,比如vector<int>,vector<string>这种类型的数组进行查找操作。
vector<int> v1;
lower_bound(v1.begin(),v2.end(), 5);
版本二:
template
<
class
ForwardIterator,
class
T,
class
Compare>
ForwardIterator lower_bound(ForwardIterator first,ForwardIterator last,
const
T &val,Compare comp);
这个版本是对自定义数据类型的数组进行查找操作。
比如
struct data{
int id;
};
但是对这中数据类型进行查找的时候,系统是没办法对data类型进行比较大小的。
所以需要我们实现对data的大小比较的仿函数
struct datacomp{
bool operator()(const data &l, const data &r)
{
return l.id < r.id
}
}
vector<data> v2;
data data1;
lower_bound(v2.begin(),v2.end(),data1,datacomp());