upper_bound和lower_bound用法
两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找,需要查找的值由第三个参数给出。
对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,也就是返回指向被查值>查找值的最小指针,lower_bound则是返回的是被查序列中第一个大于等于查找值的指针,也就是返回指向被查值>=查找值的最小指针。
不过除此之外,这两个函数还分别有一个重载函数,可以接受第四个参数。如果第四个参数传入greater<Type>()
,其中Type改成对应类型,那么upper_bound则返回指向被查值<查找值的最小指针,lower_bound则返回指向被查值<=查找值的最小指针。
最后说一点使用的注意事项,先看这么一句话“ The elements in the range shall already be sorted according to this same criterion (operator< or comp), or at least partitioned with respect to val”(引用自http://www.cplusplus.com/reference/algorithm/upper_bound/)。简单来说,如果你用上述两个函数三个参数的那种形式,记得那个左闭右开的区间要为非递减的顺序,如果你给第四个参数传入greater<Type>()
,则区间为非递增的顺序。
- 附上一段代码,供大家快速检验使用(注释掉的是错误用法):
#include <iostream>
#include <algorithm>using namespace std;int seq1[] = {1, 2, 3, 3, 4, 5}, seq2[] = {9, 8, 7, 7, 6, 5};int main()
{//cout<<upper_bound(seq1, seq1+6, 3, greater<int>()) - seq1<<endl;//cout<<lower_bound(seq1, seq1+6, 3, greater<int>()) - seq1<<endl;cout<<upper_bound(seq1, seq1+6, 3) - seq1<<endl;cout<<lower_bound(seq1, seq1+6, 3) - seq1<<endl;cout<<endl;cout<<upper_bound(seq2, seq2+6, 7, greater<int>()) - seq2<<endl;cout<<lower_bound(seq2, seq2+6, 7, greater<int>()) - seq2<<endl;//cout<<upper_bound(seq2, seq2+6, 7) - seq2<<endl;//cout<<lower_bound(seq2, seq2+6, 7) - seq2<<endl;return 0;
}
upper_bound和lower_bound用法相关推荐
- upper_bound和lower_bound用法(史上最全)
目录 基础用法 用greater<type>()重载 进阶用法(自定义匿名函数) upper_bound进阶 lower_bound进阶 所有代码 两者都是定义在头文件<algori ...
- STL 二分查找 upper_bound和lower_bound用法
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search . 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
- upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法
头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...
- 浅谈c++中upper_bound与lower_bound的用法
神犇勿喷 在我还是个蒟蒻的时候(现在还是哈),我在网上翻了几篇有关upper_bound和lower_bound的文章,结果发现我全都看不懂非常复杂,为了避免再有人重蹈覆辙,我就发了这篇粗制滥造简单易 ...
- upper_bound 和 lowwer_bound 用法
upper_bound 和 lowwer_bound 用法 lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, ...
- upper_bound()与lower_bound函数的使用
1679: 查找2 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 给你一个长度是n的序列 ...
- upper_bound()与lower_bound()
2018-2-5 upper_bound 和lower_bound是STL中二分查找的函数,所以效率会比较高. 首先,最形象的一句话: upper_bound(i) 返回的是键值为i的元素可以插入的最 ...
- C++primer学习:关于upper_bound和lower_bound的探究.
今天花了将近一个小时仔细研究了这两个范型算法以及关联容器定义的同名函数.下面就来讲一讲它们的用法和一些细节. [1]首先是范型算法upper_bound与lower_bound;它们要求必须提供至少前 ...
- C++ upper_bound()和lower_bound()(二分查找中使用)的定义,使用方法和区别
C++ upper_bound()和lower_bound()是涉及二分查找问题一个很好用的工具,熟练使用就不用为二分查找的边界发愁了(不用重复造轮子了) 1. 调用方式 upper_bound有两种 ...
最新文章
- python编程培训-课程:尹会生的Python编程培训课程
- TCP/IP / 四次挥手之状态转换图、过程说明和原因
- sql的加减乘除运算_小白学sql(一)
- 180118 有趣的人工智能对话小程序
- 加密机工作原理_端子机压力检测装置工作原理
- 收藏 | 12个神经网络可视化工具!
- java 蓝桥杯算法训练 寂寞的数(题解)
- 木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作
- [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1
- ORACLE 11g r2 RAC 安装实施规划
- cudaMallocHost(void **,size_t)”: 无法将参数 1 从“float **”转换为“void **”
- 网络攻防技术——MD5碰撞试验
- 整理一些除了Google Adsense以外比较适合英文站的国外广告联盟
- revit二次开发之多线程的正确使用
- 未能配置数据源:未指定“url”属性,无法配置嵌入的数据源。
- 2017年研究生数学建模优秀论文汇总
- 苹果8黑屏无法强制开机_【维修案例】苹果xsmax黑屏死机不开机,如何解决?!...
- (前端)html与css,html 5、h、p标签,与_img路径
- 基于wifi控制的51单片机温度报警器
- 12306验证码识别初尝试(2)-百度通用文字识别-成功率约75%
热门文章
- php获取今日、昨日、本周、本月 日期方法
- Python字典经典例题-key,value灵活运用
- 帝国搜索模板不支持php,解决帝国CMS搜索模板不支持灵动标签的方法
- git学习(1)背景介绍
- can总线不加末端电阻_遇到总线故障总头疼,看完这些分分钟秒修
- 使用uniapp开发社区交友网站的项目教程
- 【一篇无聊的影评】吐槽《从你的全世界路过》
- 主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?
- ipvlan:openEuler 系统docker网络测试
- 中国学术会议2009---001