• upper_bound() lower_bound() 用法


    头文件 #include<algorithm>

    #include<iostream>
    #include<vector>
    #include
    <algorithm> #include<stdio.h> using namespace std; int main() { ///第一种 int a[5]={1,2,4,4,6}; int it1,it2; it1=lower_bound(a,a+5,4)-a; it2=upper_bound(a,a+5,4)-a; printf("%d %d ",it1,a[it1]); // /*输出*/ 2 4 printf("%d %d ",it2,a[it2]); // /*输出*/ 4 6 ///第二种 vector<int>vec; vec.push_back(1),vec.push_back(2); vec.push_back(4),vec.push_back(4); vec.push_back(6); vector<int>::iterator it11,it22; it11=lower_bound(vec.begin(),vec.end(),4); it22=upper_bound(vec.begin(),vec.end(),4); it1=lower_bound(vec.begin(),vec.end(),4)-vec.begin(); it2=upper_bound(vec.begin(),vec.end(),4)-vec.begin(); printf("%d %d ",it1,*it11); // /*输出*/ 2 4 printf("%d %d ",it2,*it22); // /*输出*/ 4 6

      /// 若是数组内未出现的值 如3 则输出均为 2 4
    return 0; }

     结构体也可使用

    #include <iostream>
    #include <algorithm>
    #include <stdio.h>
    #include <cstring>
    using namespace std;
    struct NODE
    {
        int x,y;
        bool operator<(const NODE& p)const{
            if(x==p.x) return y>p.y;
            return x<p.x;
        }
    }a[1005];
    int main()
    {
        int len=0;
        a[len].x=1, a[len++].y=4;
        a[len].x=2, a[len++].y=3;
        a[len].x=2, a[len++].y=5;
        a[len].x=1, a[len++].y=3;
        sort(a,a+len);
        printf("sort:
    ");
        for(int i=0;i<len;i++)
            printf("%d %d
    ",a[i].x,a[i].y);
        printf("
    ");
    
        int ind=lower_bound(a,a+len,(NODE){2,5})-a;
        printf("%d %d %d
    ",ind,a[ind].x,a[ind].y);
    
        return 0;
    }
  • 相关阅读:
    常用数据库的驱动类/URL/默认端口
    设备驱动程序
    linux内存管理解析1----linux物理,线性内存布局及页表的初始化
    UVA 10564
    ARM GCC CodeSourcery 下载地址
    Linux Shell编程入门
    Flume研究心得
    Bluetooth in Android 4.2 and 4.3(三):Enable Bluetooth
    <机器学习实战>读书笔记--logistic回归
    <机器学习实战>读书笔记--朴素贝叶斯
  • 原文地址:https://www.cnblogs.com/zquzjx/p/8835425.html
Copyright © 2020-2023  润新知