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());