[C++] upper_bound和lower_bound
2024-08-31 13:36:26
upper_bound 源码
template <class ForwardIterator, class T>
ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& val)
{
ForwardIterator it;
iterator_traits<ForwardIterator>::difference_type count, step;
count = std::distance(first,last);
while (count>0)
{
it = first; step=count/2; std::advance (it,step);
if (!(val<*it)) // or: if (!comp(val,*it)), for version (2)
{ first=++it; count-=step+1; }
else count=step;
}
return first;
}
lower_bound 源码
template <class ForwardIterator, class T>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val)
{
ForwardIterator it;
iterator_traits<ForwardIterator>::difference_type count, step;
count = distance(first,last);
while (count>0)
{
it = first; step=count/2; advance (it,step);
if (*it<val) { // or: if (comp(*it,val)), for version (2)
first=++it;
count-=step+1;
}
else count=step;
}
return first;
}
若val在原数组中存在,则upper_bound返回最后一个val的位置,lower_bound返回第一个val的位置
若val在原数组中不存在,则upper_bound和lower_bound返回的都是val因放在哪个位置而不影响原序列
最新文章
- slf4j
- pandas 数据检索
- AD账号创建日期、最近一次登录时间、最近一次重置密码时间查询
- 微软职位内部推荐-Senior Development Engineer
- Linux mount/unmount命令(转)
- Leetcode 之Convert Sorted List to Binary Search Tree(55)
- Unique Paths [LeetCode]
- POJ2284 That Nice Euler Circuit (欧拉公式)(计算几何 线段相交问题)
- java socket编程基础(转)
- UVa 10256 - The Great Divide 判断凸包相交
- UVA 796 - Critical Links (求桥)
- IFeatureClass.Search中的 Recycling 参数 - 浅谈.
- IBM Python 技术专题
- hibernate tools连接数据报错
- 【经验】JavaScript
- 关于static的一点点总结
- PMP三点
- hashmap相关面试题
- 关于dos命令行脚本编写
- ajax跨域请求数据
热门文章
- C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制
- 简单来说一下java中的泛型,ssh中dao层使用会简化代码量
- poj3249 Test for job 【图的DAG dp】
- 安装MYSQL错误“conflicts with file from package mysql-libs-*” 解决方法
- 项目复习期总结3:CSS引入方式,凝视,命名规范,背景,行高,文本属性
- Oracle分析函数ntile
- yolo源码解析(1):代码逻辑
- 用ksh运行一个helloworld
- python 3.x 学习笔记14 (socket_ssh and socket_文件传输)
- 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)