zoukankan      html  css  js  c++  java
  • lower_bound与upper_bound在降序序列的应用

    基本概念

    lower_bound函数格式:lower_bound(起始地址,结束地址,要查找的数值)

    upper_bound函数格式:upper_bound(起始地址,结束地址,要查找的数值)

    lower_bound函数:返回第一个大于等于所要查找的数值的地址

    upper_bound函数:返回第一个大于所要查找的数值的地址

    返回值

    设k为查找值。

    对于升序或不下降序列,不填cmp函数:

    upper_bound函数返回指向大于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针(迭代器)。

    lower_bound函数返回指向大于等于k的第一个元素的指针(迭代器),找不到就返回填入的区间右端点,也就是返回指向 | 区间末尾元素的后一个元素 | 的指针(迭代器)。

    对于降序或不上升序列,填cmp函数:

    upper_bound函数返回指向小于k的第一个元素的指针(迭代器),找不到就返回填入的区间左端点,也就是返回指向区间初始元素的指针(迭代器)。

    lower_bound函数返回指向小于等于k的第一个元素的指针(迭代器),找不到就返回填入的区间左端点,也就是返回指向区间初始元素的指针(迭代器)。

    总结:如果找不到,总是返回最大值端的指针

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int a[5]={1,2,3,4,5};
    int b[5]={5,4,3,2,1};
    
    bool cmp(const int &a,const int &b)
    {
        return a>b;
    }
     
    int main()
    {
        int c=lower_bound(a+0,a+5,3)-a;
        int c1=lower_bound(b+0,b+5,2,greater<int>())-b;    // 直接使用 greater<int>() 
        int c2=lower_bound(b+0,b+5,2,cmp)-b; // 自定义cmp改变比大小规则 
        cout<<c<<" "<<c1<<" "<<c2<<endl;// 两种方法得出的结果相同 
        return 0;
    }
  • 相关阅读:
    Nginx 前后端分离部署
    SpringBoot 使用外部 Tomcat 容器运行
    SpringBoot 加载 properties
    SpringBoot 启动时加载的自动配置类(SpringFactoriesLoader、SPI)
    微信小程序订阅消息通知
    centos云服务器 部署Gitblit
    centos 安装java
    图片链接控制宽高
    腾讯云部署https
    腾讯云域名绑定
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/15561204.html
Copyright © 2011-2022 走看看