当前位置: 首页 > news >正文

最全、最清晰、C++的 lower_bound / upper_bound 总结

最全、最清晰的 lower_bound / upper_bound 总结,包含:

✔ 功能解释(通俗 + STL 定义)
✔ 返回值含义
✔ 典型代码例子
✔ 在竞赛中的常用技巧
✔ 与 equal_range 的关系
✔ 可视化图示


🔵 1. lower_bound / upper_bound 是什么?

它们是 STL 中的 二分查找算法,要求区间 有序(非降序)


🔶 2. lower_bound

✔ 定义

iterator lower_bound(iterator first, iterator last, const T& value)

✔ 作用

找到第一个 ≥ value 的位置

✔ 返回值

  • 返回指向 第一个 ≥ value 的迭代器
  • 如果不存在,则返回 last

✔ 举例

vector<int> v = {1,2,4,4,4,7,9};
auto it = lower_bound(v.begin(), v.end(), 4);
// it 指向第一个 4(下标 2)

视觉化:

索引:   0 1 2 3 4 5 6
值:     1 2 4 4 4 7 9↑
lower_bound(v, 4) = index 2

🔶 3. upper_bound

✔ 定义

iterator upper_bound(iterator first, iterator last, const T& value)

✔ 作用

找到第一个 > value 的位置

✔ 返回值

  • 返回指向 第一个 > value 的迭代器
  • 如果不存在,则返回 last

✔ 举例

auto it = upper_bound(v.begin(), v.end(), 4);
// it 指向 7(下标 5)

视觉化:

索引:   0 1 2 3 4 5 6
值:     1 2 4 4 4 7 9↑
upper_bound(v, 4) = index 5

🔵 4. lower_bound 与 upper_bound 的总结表

函数名 找到的位置
lower_bound(a,a+n,x) 第一个 ≥ x 的元素
upper_bound(a,a+n,x) 第一个 > x 的元素

🔵 5. 典型用法:查找元素出现次数

int cnt = upper_bound(v.begin(), v.end(), x) - lower_bound(v.begin(), v.end(), x);

例如:v = {1,2,4,4,4,7,9}

查 4:

lower_bound = index 2
upper_bound = index 5
出现次数 = 5 - 2 = 3

🔵 6. 典型竞赛用法

✔ (1) 在有序数组中插入某个值的位置

int pos = lower_bound(a, a+n, x) - a;

✔ (2) 二分查找某个区间内的数量

如查询 (L, R] 区间内有多少个数字:

cnt = upper_bound(v.begin(), v.end(), R)- upper_bound(v.begin(), v.end(), L);

✔ (3) LIS(最长上升子序列)

LIS 模板里就是用 lower_bound 找替换位置。


🔵 7. equal_range = lower_bound + upper_bound

auto p = equal_range(v.begin(), v.end(), x);
// p.first  = lower_bound
// p.second = upper_bound

🔵 8. 在 set / multiset 中也能用 lower_bound / upper_bound

例如:

set<int> s = {1, 3, 5, 7};
auto it = s.lower_bound(4);  // 指向 5

http://www.jsqmd.com/news/56252/

相关文章:

  • 密码系统设计实验3-2
  • Mysql基础3 - 实践
  • 2025-12-01-Nature 本周最新文献速递
  • 论程序员的管理
  • DevOps设备链对比,Azure 和 TikLab哪款更好用?
  • The country with the largest area in the world
  • 田径赛场飞驰 球类竞技闪耀
  • 绿茵赛场逐梦 热血竞技铸辉煌
  • 一加ACE5 安装类原生系统 crDroid 12
  • 在cline中使用多个OpenAI Compatible
  • 2025年11月景区饮品供应商推荐榜单:一份基于市场数据与用户口碑的权威选择指南
  • 2025年11月景区饮品供应商推荐:避坑要点与行业权威评测报告
  • 域名解析工具nslookup和dig对比
  • 2025年11月景区饮品供应商推荐榜单:一份基于市场数据的客观选择指南
  • 2025年11月景区饮品供应商推荐榜单与市场选择指南
  • 成膜助剂批发商精选,厂家、供货商及制造商汇总:TOP10名单权威推荐
  • 成膜助剂贸易公司TOP10优选,出口厂商与资质供应商清单权威推荐
  • 单片机按键扫描
  • Windows11恢复经典样式右键菜单
  • 过碳酸钠哪家质量好?过碳酸钠供应商TOP10名单优选:销量领先欧盟标准供应商
  • 成膜助剂外贸公司推荐——出口厂商及资质供应商指南:实力解析
  • 成膜助剂哪家好?质量好的成膜助剂厂家:技术实力与行业价值解析
  • 过碳酸钠源头厂家有哪些?过碳酸钠源头厂家、供应商、生产厂家推荐:环保型可吨批!
  • 过碳酸钠哪家好?TOP前10榜单——过碳酸钠采购指南:制造商、供货商及批发商精选
  • 详细介绍:kubectl 的taint和cordon命令区别
  • 成膜助剂厂家权威推荐:成膜助剂出口厂商名录——有资质供应商与贸易公司
  • 2025年TOP榜单:过碳酸钠厂家推荐,销量高且符合欧盟标准,哪家质量好?
  • 详细介绍:线程安全单例模式与懒汉线程池的实现与优化
  • 真术相成:成都 AI 培训领域的权威机构,凭什么成为政企合作首选?
  • 《程序员修炼之道:从小工到专家》前五分之四观后感