天天看点

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

继续阅读