新闻中心
C++ lower_bound与upper_bound用法_C++有序序列的二分查找利器
lower_bound返回首个不小于目标值的迭代器,upper_bound返回首个大于目标值的迭代器,二者结合可确定元素出现区间。例如在升序数组{1,2,4,4,5,7}中查找4,lower_bound指向索引2,upper_bound指向索引4,差值为出现次数2。降序排列时需传入greater()等自定义比较函数,确保与排序规则一致。使用前必须保证序列有序,可高效实现查找、去重、插入等操作。

在C++中,lower_bound 和 upper_bound 是处理有序序列时非常高效的二分查找工具,定义于 gorithm> 头文件中。它们能快速定位目标值的位置,常用于去重、插入排序、区间统计等场景。
lower_bound:查找第一个不小于目标值的位置
函数作用:在有序区间 [first, last) 中,返回指向第一个元素位置,其值大于等于给定值 val 的迭代器。
使用前提:序列必须按升序排列(或按自定义比较规则有序)。
示例代码:
vector 若查找值为 3,则返回指向 4(索引2)的迭代器,因为它是第一个 ≥3 的元素。 函数作用:返回指向第一个元素位置,其值严格大于给定值
vector 结果指向值为5的元素,即第一个 >4 的位置。 当需要找出某个值在有序序列中的所有出现范围时,可结合两者:
int val = 4; 这段代码输出 2,表示4出现了两次。 如果容器按降序排列,需传入比较函数,例如
vector 此时逻辑基于自定义顺序,确保比较规则与排序一致。 基本上就这些。熟练使用 lower_bound 和 upper_bound,能避免手写二分错误,提升编码效率和准确性。注意使用前务必保证序列有序。
auto it = lower_bound(nums.begin(), nums.end(), 4);
cout upper_bound:查找第一个大于目标值的位置
val 的迭代器。
auto it = upper_bound(nums.begin(), nums.end(), 4);
cout 配合使用:确定值的完整出现区间
auto left = lower_bound(nums.begin(), nums.end(), val);
auto right = upper_bound(nums.begin(), nums.end(), val);
cout 支持自定义比较函数
greater<int>()</int>:
auto it = lower_bound(desc.begin(), desc.e
nd(), 4, greater
// 找到第一个 ≤4 的位置(降序中“不小于”含义改变)
以上就是C++ lower_bound与upper_bound用法_C++有序序列的二分查找利器的详细内容,更多请关注其它相关文章!
# 降序
# 养生酒营销推广策略分析
# 淄博网站平台建设
# 龙岗网站推广流程模板
# 隆尧哪里有网站建设标准
# 佛山品牌网站建设报价
# 交友网站发展建设
# 杭州代理商关键词排名
# 达州网站建设设计
# 句容无锡全网营销推广
# 曼秀雷敦营销推广方案
# 解决方法
# 首个
# c++
# 重写
# 值为
# 升序
# 有什么
# 自定义
# 迭代
# 第一个
# 排列
# 工具
# 编码
# go
# 二分查找
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
c++ dfs和bfs代码 c++深度广度优先搜索算法
必由学官方网站入口 必由学学生教师共用登录通道
2026年CSGO开箱网站推荐 CSGO开箱平台精选
JUnit5/Mockito:优雅测试内部依赖与异常处理的实践
2026春节假期票务安排_2026春节放假购票指南
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
b站如何看历史记录_b站观看历史找回方法
蛙漫移动版在线看 蛙漫手机浏览器直达入口
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
双系统安装时,如何设置默认启动系统? msconfig命令了解一下!
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
学习通在线学习平台 学习通网页版直接进入课程中心
火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧
夸克浏览器图书入口 夸克手机浏览器阅读入口
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】
在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
必由学在线入口 必由学网页版快速登录入口
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
在Go Martini框架中高效服务动态生成图像的实践指南
J*a里如何使用forEach遍历Map_Map遍历方法说明
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】
12306选座系统怎么选连座_12306选座多人连坐操作方法
CSS布局中意外空白:解决padding-top导致的顶部间距问题
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
整合Supabase认证与Django模型:跨模式迁移的解决方案
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
在Socket.IO连接中实现Access Token自动更新与动态重连
如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
Pandas DataFrame 多条件优先级排序与排名
Win11怎么开启省电模式_Win11电池节电模式自动开启
c++20的std::jthread是什么_c++可中断线程与RAII式管理
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
小米Civi 4录制视频过暗_小米Civi 4亮度优化
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
BetterDiscord插件中安全更新用户简介的实践指南
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
Python模块化编程:有效管理依赖与避免循环引用
ArrayList与LinkedList操作复杂度详解:遍历与修改


2025-11-28
浏览次数:次
返回列表