新闻中心
c++中std::lower_bound和std::upper_bound的用法 _c++二分查找算法使用技巧
std::lower_bound找≥目标值的第一个位置,std::upper_bound找>目标值的第一个位置,二者结合可计算有序序列中元素出现次数,均需有序区间并支持自定义比较函数。

在C++中,std::lower_bound 和 std::upper_bound 是两个非常实用的二分查找算法,定义在 algorithm 头文件中。它们用于在已排序的区间中快速定位元素的位置,常用于优化查找性能,尤其是在处理大量有序数据时。
std::lower_bound:查找第一个不小于目标值的位置
std::lower_bound(first, last, value) 返回一个迭代器,指向区间 [first, last) 中第一个不小于 value 的元素位置。换句话说,它找到的是第一个满足 ≥ value 的元素。
常见用途:
- 判断某个值是否存在或插入位置
- 统计有序数组中 ≥ 某个值的最小下标
示例:
Pinokio
Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用
232
查看详情
vectorauto it = std::lower_bound(nums.begin(), nums.end(), 4);
// it 指向第一个 4,下标为 2
std::upper_bound:查找第一个大于目标值的位置
std::upper_bound(first, last, value) 返回指向区间中第一个大于 value 的元素的迭代器。即找到第一个满足 > value 的位置。
典型场景:
- 确定某个值在有序序列中的“上界”
- 配合 lower_bound 计算某个值的出现次数
示例:
vectorauto it = std::upper_bound(nums.begin(), nums.end(), 4);
// it 指向 5,下标为 4
结合使用:统计元素出现次数
对于有序数组中重复元素的计数,可以利用这两个函数:
int count = std::upper_bound(nums.begin(), nums.end(), x)- std::lower_bound(nums.begin(), nums.end(), x);
这段代码计算了值 x 在数组中出现的次数。因为:
- lower_bound 找到第一个 x 的位置
- upper_bound 找到第一个 > x 的位置
- 两者之差就是 x 的频次
自定义比较函数(支持降序和结构体)
默认情况下,这两个函数使用 比较,适用于升序排列。如果容器是降序,或者你想用自定义规则,可以传入比较函数或 lambda。
例如,对降序数组使用:
vectorauto it = std::lower_bound(nums.begin(), nums.end(), 4, std::greater
// 使用 greater
也可以用 lambda 实现更复杂的逻辑。
基本上就这些。只要记住:lower_bound 找 ≥,upper_boun
d 找 >,且都要求数据有序。合理使用能大幅提高查找效率,避免手写二分出错。不复杂但容易忽略细节。
以上就是c++++中std::lower_bound和std::upper_bound的用法 _c++二分查找算法使用技巧的详细内容,更多请关注其它相关文章!
# 如何实现
# 网站排名优化夆还是宙d9斯推选
# 广西省网站优化加盟
# 桂城seo优化维护
# 德宏装饰网站建设报价
# 嘉兴银川网站推广
# seo相关内容推荐
# 义乌短视频seo咋做
# 廊坊seo接单
# 哈密抖音seo推荐
# 南昌网站建设全包
# 管理机制
# go
# 何为
# 这两个
# 组中
# 使用技巧
# 降序
# 都是
# 自定义
# 第一个
# 排列
# c++
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
uc浏览器网页版入口 uc浏览器网页版最新网址
Python Socket多播通信中指定源IP地址的实践指南
汽水音乐在线解析 汽水音乐在线解析入口
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
怎么在mac上运行html代码_mac运行html代码方法【指南】
小米汽车11月交付量突破40000台!雷军:将继续努力
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
Spyder启动失败:字体文件权限拒绝错误解决方案
2026年CSGO开箱网站推荐 CSGO开箱平台精选
Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】
知音漫客正版漫画平台_知音漫客官网账号登录
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
Promise错误处理:在catch后终止链式then执行的策略
微信网页版登录教程_微信网页版登录入口在哪
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
steam官方网页快速访问 steam账号注册全流程
css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
深入理解J*a合成构造器:何时以及为何阻止其生成
Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析
AO3官方镜像站点汇总 AO3同人作品网页版直达链接
PHP中获取MongoDB服务器运行时间(Uptime)的专业指南
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
C++ vector二维数组定义_C++ vector of vector用法
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
小米Civi 4录制视频过暗_小米Civi 4亮度优化
Tailwind CSS line-clamp 布局问题解析与修复指南
Golang如何实现容器化日志收集与分析_Golang容器日志收集分析方法
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
邮政快递包裹最新位置 邮政快递实时追踪入口
Win11怎么开启高性能模式_Windows 11电源计划优化设置
在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】
菜鸟取件码是什么怎么查 最全查询渠道汇总
火锅吃太多会怎样 火锅吃太多会上火吗
快手官方唯一登录入口 谨防山寨钓鱼网站
微信网页版官方入口教程 微信网页版网页版快速登录步骤
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
2025-2030年全球乘用车销量预测:新能源成增长主力
Go语言中的*string:深入理解字符串指针
c++ 命名空间怎么用 c++ namespace使用指南
智慧团建扫码登录入口 智慧团建扫码登录入口官网版
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法


2025-10-30
浏览次数:次
返回列表