函数学习-upper_bound与lower_bound函数

upper_bound与lower_bound函数

格式

两个函数用法类似,都是对一个有序序列的一个左闭右开的有序区间进行二分查找,区间左端点和右端点分别为第1、2个参数,第三个参数是查找的值,第四个参数可填一个cmp函数。以下用upper_bound函数举例。
1 对于一个升序序列或不下降序:upper_bound(lef,rig,k);
2 对于一个降序序列或不上升序列

upper_bound(lef,rig,k,cmp);
//cmp函数的书写
bool cmp(const int &x,const int &y){return x>y;}

对于数组,lef和rig为指向数组元素的指针,STL则是迭代器。
注意cmp函数里参数类型要么为const int&要么为int。不能填int &

用法

设k为查找值。

  • 对于升序或不下降序列,不填cmp函数:
    upper_bound函数返回指向大于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针(迭代器)。
    lower_bound函数返回指向大于等于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针(迭代器)。
  • 对于降序或不上升序列,填cmp函数:
    upper_bound函数返回指向小于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针
    lower_bound函数返回指向小于等于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针

最后

个人总结,如果发现错误欢迎指出。

posted @ 2021-02-09 18:03  七铭的魔法师  阅读(812)  评论(0编辑  收藏  举报