15分钟带你了解lower_bound和upper_bound

简介: 🍀理解,学会lower_bound和upper_bound原理及其用法
🏆今日学习目标:
🍀理解,学会lower_bound和upper_bound原理及其用法
✅创作者:贤鱼

请添加图片描述

lower_bound

==定义:找到第一个大于等于目标数字的数字==
==注意,lower和upper返回的都是地址,减去数组得到下标==

用法lower_bound(数组开始搜索位置,数组结束搜索位置,目标数字);
int lu[7]={0,1,2,4,7,16,32};
这里定义一个数组,方便讲解,开头是0让第一个数字下标从1开始
cout<<lower_bound(lu,lu+6,7)-lu<<" "<<lu[lower_bound(lu,lu+6,7)-lu]<<endl;
输出内容,数组内下标为4的数据正式7,同时7等于7
在这里插入图片描述

upper_bound

==定义:找到第一个大于目标数字的数字==

用法upper_bound(数组开始搜索位置,数组结束搜索位置,目标数字);
cout<<upper_bound(lu,lu+6,7)-lu<<" "<<lu[upper_bound(lu,lu+6,7)-lu]<<endl;
输出了5,和16,很明显下标为5的正式16,同时在这个升序数组中第一个比他大的正式16
在这里插入图片描述

其他用法

==前面讲过了如何找到第一个大于或者大于等于目标数字的下标,现在讲一下如何找到小于或者小于等于数字的下标==
int up[7]={66,32,16,9,7,3,2};
这里

小于等于

==我们在目标数字后面加一个greater可以实现==
cout<<lower_bound(up,up+6,7,greater<int>())-up<<" "<<up[lower_bound(up,up+6,7,greater<int>())-up]<<endl;
可以看到返回了4和7,因为我们重新定义的数组下标为4的数字正好为7,由此可见我们实现了寻找小于等于目标数字
在这里插入图片描述

小于

cout<<upper_bound(up,up+6,7,greater<int>())-up<<" "<<up[upper_bound(up,up+6,7,greater<int>())-up]<<endl;
这里输出了5和3,下标为5的数字是3,这里寻找==小于==目标数字的,所以不选择7,选择了3
在这里插入图片描述

总结

    int lu[7]={0,1,2,4,7,16,32}; 
    cout<<lower_bound(lu,lu+6,7)-lu<<" "<<lu[lower_bound(lu,lu+6,7)-lu]<<endl;    //第一个大于等于
    cout<<upper_bound(lu,lu+6,7)-lu<<" "<<lu[upper_bound(lu,lu+6,7)-lu]<<endl;    //第一个大于
    int up[7]={66,32,16,9,7,3,2};
    cout<<lower_bound(up,up+6,7,greater<int>())-up<<" "<<up[lower_bound(up,up+6,7,greater<int>())-up]<<endl;//第一个小于等于  
    cout<<upper_bound(up,up+6,7,greater<int>())-up<<" "<<up[upper_bound(up,up+6,7,greater<int>())-up]<<endl; //第一个小于
==今天的学习就到这里,对您有帮助的话可以订阅一下专栏,内容持续更新奥==

请添加图片描述

相关文章
|
9月前
|
人工智能 自然语言处理 搜索推荐
阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024
在新加坡 ElasticON 2025 的 Elastic 合作伙伴峰会上,阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024!
479 1
|
11月前
|
人工智能 安全 Linux
阿里云与龙蜥携手打造智算时代最佳服务器操作系统
本次分享的主题是阿里云与龙蜥携手打造智算时代最佳服务器操作系统,由阿里云技术软件部产品总监张鹏程分享。主要分为三个部分: 1.开源社区 2.操作系统 3.云 + AI
483 0
阿里云与龙蜥携手打造智算时代最佳服务器操作系统
|
数据采集 Python 数据可视化
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
|
JavaScript Java 测试技术
基于springboot+vue.js的企业资产管理系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的企业资产管理系统附带文章和源代码设计说明文档ppt
249 8
|
安全 Python Windows
游戏开发丨基于Tkinter的扫雷小游戏
游戏开发丨基于Tkinter的扫雷小游戏
397 3
|
Ubuntu 关系型数据库 MySQL
基于Ubuntu搭建个人网盘
本文为您介绍如何快速搭建一个基于Ubuntu的个人网盘。
|
Python
解决Anaconda报The channel is not accessible源通道不可用问题
最近在通过pycharm开发python程序,引用anaconda环境建立虚拟环境时报错,报UnavailableInvalidChannel: The channel is not accessible or is invalid.应该是镜像源访问通道无法访问或无效。现将解决办法记录如下:
14451 0
解决Anaconda报The channel is not accessible源通道不可用问题
|
Shell
bash: accelerate: command not found
bash: accelerate: command not found
3871 3
|
人工智能 运维 架构师
如何用 7 分钟玩转函数计算?
为了帮助各位快速了解使用函数计算,阿里云 Serverless 产品经理刘宇带来 7 分钟微课程「函数计算 FC : 让研发效能再提升」,27 节课程包含技术理解,架构解析、案例实践、动手实操等内容,以短视频模式,循序渐进讲透 Serverless 运行原理,深度解析 Serverless 落地实践,设置丰富的体验场景,让你快速实现 Serverless 技术从入门到实践的跨越。
如何用 7 分钟玩转函数计算?
|
Java Maven 对象存储
SpringBoot整合七牛云实现文件上传
七牛云文件上传 1、引入Maven依赖 <dependen