关于STL中的二分(lower_boundupper_bound)
lower_boundupper_bound这两个函数是为了支持随机访问随机访问迭代器而设计的。1.lower_bound模版结构// 查找第一个【大于或等于】value 的位置templateclassForwardIt,classTForwardItlower_bound(ForwardIt first,ForwardIt last,constTvalue);first / last: 搜索范围必须是有序序列。value: 要查找的目标值。返回值: 返回一个指向该元素的迭代器如果找不到则返回 last。操作示例vectorintv{1,2,4,4,4,6,7};// 查找第一个 4 的位置autoit_lowstd::lower_bound(v.begin(),v.end(),4);// 指向第一个 4 的下标下标 22.upper_bound模版结构// 查找第一个【严格大于】value 的位置templateclassForwardIt,classTForwardItupper_bound(ForwardIt first,ForwardIt last,constTvalue);first / last: 搜索范围必须是有序序列。value: 要查找的目标值。返回值: 返回一个指向该元素的迭代器如果找不到则返回 last。操作示例vectorintv{1,2,4,4,4,6,7};// 查找第一个 4 的位置autoit_upstd::upper_bound(v.begin(),v.end(),4);// 指向数字 6 的下标下标 53. 关联容器的成员函数特别注意对于有序关联容器必须使用其自带的成员函数而非全局算法。核心差异虽然全局的std::lower_bound也能处理set或map但因为关联容器的迭代器不支持随机访问全局算法会退化为线性查找O(N)O(N)O(N)。而成员函数版本利用红黑树的特性能保证对数查找O(log⁡N)O(\log N)O(logN)。常用容器接口// 以 std::set 为例iteratorlower_bound(constKeykey);iteratorupper_bound(constKeykey);// 以 std::map 为例仅针对 Key 进行查找iteratorlower_bound(constKeykey);iteratorupper_bound(constKeykey);操作示例std::setsetints{10,20,30,40,50};// 查找第一个 25 的元素autoit_lows.lower_bound(25);// 指向 30// 查找第一个 30 的元素autoit_ups.upper_bound(30);// 指向 40操作示例std::map在 map 中这两个函数只检查 Key。std::mapint,stringm{{1,apple},{3,banana},{5,cherry}};autoitm.lower_bound(2);// 返回迭代器指向 {3, banana}因为 3 是第一个 2 的键4. 进阶equal_range如果你需要同时获取lower_bound和upper_bound例如在multiset中找出所有等于某个值的区间可以使用equal_range。模版结构// 返回一个 pair包含 [lower_bound, upper_bound)std::pairiterator,iteratorequal_range(constKeykey);实际应用std::multisetintms{1,2,2,2,3};autorangems.equal_range(2);// range.first - 指向第一个 2// range.second - 指向数字 3 (第一个严格大于 2 的位置)// 距离即为元素个数autocountstd::distance(range.first,range.second);// 结果为 3总结如何选择容器类型推荐函数时间复杂度vector / array / dequestd::lower_boundO(log⁡N)O(\log N)O(logN)set / map / multiset /multimapcontainer.lower_bound()O(log⁡N)O(\log N)O(logN)liststd::lower_boundO(N)O(N)O(N)(不推荐对 list 频繁二分)unordered_set/unordered_map不支持(无序容器没有边界概念)N/A

相关新闻

uniappX+uts view组件小程序版本样式问题

uniappX+uts view组件小程序版本样式问题

uniappXuts 样式默认问题 版本 目前我使用的版本是4.76版本 根据官方详解像view等组件默认样式是:flex-direction: column; 但实际开发微信小程序中 view组件的样式是display:block;建议大家实际开发// 尽量加上,以免发生不适配问题.类名{display: flex;flex-direct…

2026/5/17 11:05:53 阅读更多 →
从锁芯到人脸,从续航到安装:格行GX-08为何能成年轻人的“流量密码”?老师傅拆解其“越级”流量密码;智能门锁那款性价比高?怎么选?

从锁芯到人脸,从续航到安装:格行GX-08为何能成年轻人的“流量密码”?老师傅拆解其“越级”流量密码;智能门锁那款性价比高?怎么选?

清晨被锁门外的狼狈、全勤奖的焦虑,正成为年轻人更换智能锁的直接导火索。当智能门锁从可选品变为家庭安全的核心入口,百元级市场却充斥着低价与低质的矛盾——要么功能阉割,要么安装费劲。在此背景下,格行GX-08凭借“越级配置”在…

2026/5/17 11:05:53 阅读更多 →
【杭电oj】2036~2045

【杭电oj】2036~2045

2037.今年暑假不AC 思路&#xff1a;涉及贪心算法&#xff0c;可以看看这个视频贪心算法例题 #include <stdio.h>void swap(int *a,int *b){int t*a;*a*b;*bt; } int main(){int n,i,j,count;int a[100][2];while(scanf("%d",&n)!EOF){if(n0) break;for…

2026/5/17 11:05:53 阅读更多 →

最新新闻

Python+Django商铺管理系统毕业设计实战指南

Python+Django商铺管理系统毕业设计实战指南

1. 项目背景与核心价值去年指导计算机专业毕业设计时&#xff0c;发现商铺管理系统是经管类院校的热门选题。这类系统看似简单&#xff0c;实则完整涵盖了进销存管理、会员体系、财务统计等商业场景的数字化需求。PythonDjango的组合既能快速实现基础功能&#xff0c;又留有足够…

2026/7/3 12:08:03 阅读更多 →
三步解锁Wand专业版功能:免费畅享完整游戏修改体验的终极指南

三步解锁Wand专业版功能:免费畅享完整游戏修改体验的终极指南

三步解锁Wand专业版功能&#xff1a;免费畅享完整游戏修改体验的终极指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了Wand&#xff08;…

2026/7/3 12:06:02 阅读更多 →
如何快速实现Unity游戏自动翻译:XUnity.AutoTranslator完整配置指南

如何快速实现Unity游戏自动翻译:XUnity.AutoTranslator完整配置指南

如何快速实现Unity游戏自动翻译&#xff1a;XUnity.AutoTranslator完整配置指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍而烦恼吗&#xff1f;XUnity.AutoTranslator为你…

2026/7/3 12:06:02 阅读更多 →
本地AI编程助手搭建指南:Gemma 2+Ollama+Gradio三步落地

本地AI编程助手搭建指南:Gemma 2+Ollama+Gradio三步落地

1. 项目概述&#xff1a;为什么一个本地AI编程助手值得你花两小时搭起来Gemma 4不是某个神秘新模型的代号&#xff0c;而是指Google最新发布的Gemma 2系列中面向开发者优化的7B参数版本——准确说是Gemma 2 7B Instruct。它被设计成轻量、开源、可商用的代码理解与生成基座&…

2026/7/3 12:02:01 阅读更多 →
3步实现完美网页长截图:告别拼接烦恼的终极解决方案

3步实现完美网页长截图:告别拼接烦恼的终极解决方案

3步实现完美网页长截图&#xff1a;告别拼接烦恼的终极解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extensi…

2026/7/3 12:02:01 阅读更多 →
读懂Qwen3 Benchmark:不是比分数,而是看能力适配

读懂Qwen3 Benchmark:不是比分数,而是看能力适配

1. 看懂Qwen3报告里的Benchmark&#xff0c;不是看分数高低&#xff0c;而是看它在解决什么问题最近阿里通义实验室发布的Qwen3系列模型&#xff0c;在开源大模型圈里掀起了不小波澜。朋友圈刷屏的“登顶全球最强开源模型”“全面超越Llama-405B”这类标题很抓眼球&#xff0c;…

2026/7/3 11:57:57 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述&#xff1a;为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473&#xff0c;一个关于TLS/SSL协议重协商机制的漏洞&#xff0c;现在提起来还有必要吗&#xff1f;很多运维和开发朋友可能会觉得&#xff0c;这都老掉牙了&#xff0c;现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述&#xff1a;为什么需要双通道远程管理防火墙&#xff1f;在任何一个稍具规模的企业网络里&#xff0c;防火墙都是那个默默守护在边界的关键角色。作为网络工程师&#xff0c;我们不可能每次都跑到机房&#xff0c;插上console线去配置它。远程管理能力&#xff0c;…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述&#xff1a;AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域&#xff0c;同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件&#xff0c;与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻