lower_bound

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

猜你喜欢

转载自konin.iteye.com/blog/2335823