• lower_bound:返回第一个大于等于查找值的地址
  • upper_bound:返回第一个严格大于查找值的地址

使用这两个函数需要的头文件

#include <algorithm>
using namespace std;

要求数组必须是有序/单调的


lower_bound

lower_bound( a + 1, a + n + 1, x );

意义:查找数组aaa中[1,n+1)[1,n+1)[1,n+1)区间第一个大于等于xxx的值的地址

upper_bound

upper_bound( a + 1, a + n + 1, x );

意义:查找数组aaa中[1,n+1)[1,n+1)[1,n+1)区间第一个大于xxx的值的地址

lower_bound,upper_boundlower\_bound,upper\_boundlower_bound,upper_bound和sortsortsort一样都是前闭后开

以lower_boundlower\_boundlower_bound为例
upper_boundupper\_boundupper_bound是一样的

如果想要的是第一个大于等于xxx的下标,可以减去数组名即可

lower_bound( a + 1, a + n + 1, x ) - a;

①:
不管查询的区间是哪到哪,返回的下标的永远是整个数组从000开始计算的下标

举个例子:
数组:0 1 3 5 7 14
询问数组的第2项到第4项第一个大于等于1的下标
即3 5 7中第一个大于等于1的——3的下标为2
②:
如果查询的整个区间里一个都没有大于等于查询值
返回的即为整个区间的下一位,也就是查询表示区间[l,r)[l,r)[l,r)的开区间点rrr
接下来讲讲为什么要求数组是有序的
一句话——因为lower_bound,upper_boundlower\_bound,upper\_boundlower_bound,upper_bound的实质是二分

如果不能保证数组的单调性
你的性命就完全由数据决定是春分刀斩还是秋后腰斩


偶尔可能会用到的——去重

unique();

食用指南:

返回的是也是地址,同样也需要一样的头文件

想要下标的操作同样是减去数组名

这个去重的前提依然是数组单调有序

unique( a + 1, a + n + 1 ) - a;

表示将数组aaa的[1,n+1)[1,n+1)[1,n+1)进行去重操作后得到的下标
为什么说是下标,因为其返回的其实是区间去重补位后在aaa数组的下标

如果数组下标不是从000开始的,那么要减去开始位置


建议自己整些数据手玩,说不定可以发现更多计算机的好玩之处哦!~

[C++ STL algorithm] lower_bound、upper_bound、unique的本质相关推荐

  1. STL之lower_bound,upper_bound二分查找函数 结构体

    codeforces上的代码是开放的,常常就能看到本渣与大神们的差距 比如二分查找... 1.在数组中,找出第一个4所在位置 输入: 14 4 1 2 2 3 4 4 4 4 5 6 7 9 9 10 ...

  2. STL源码剖析 lower_bound | upper_bound | binary_search

    lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...

  3. stl algorithm -- sort ,unique

    在写私信群聊代码的时候碰到怎么把一个vector<Int> 元素unique化的问题,基本上就是需要下面这么做,用<algorithm>中的,先sort再unique 1 #i ...

  4. C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)

    find().find_if().search() 等.值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高.例如,当指定区域内的数据处于有序状态时,如果 ...

  5. c++ 二分查找的函数 lower_bound upper_bound binary_search

    简介 C++ STL 中二分查找函数主要有这三种: lower_bound() upper_bound() binary_search() 这三个函数都运用于有序区间. 用法 1. lower_bou ...

  6. lower_bound()/upper_bound()函数(C++)

    文章目录 1.lower_bound()/upper_bound()函数简单介绍 2.lower_bound()/upper_bound()函数分析 3.lower_bound()/upper_bou ...

  7. lower_bound, upper_bound, greater, less 用法

    一般lower_bound(), upper_bound() 基本用法 定义: algorithm头文件的函数 功能: 二分查找,查询一个数组(vector也可以使用)中大于给定数的位置 条件: 因为 ...

  8. pair用法 lower_bound upper_bound

    int a,b;pair<int,int>p;cin>>a>>b;p=make_pair(a,b);cout<<p.first<<" ...

  9. 关于C++ STL中的upper_bound()

    关于C++ STL中的upper_bound() 前言 总所周知

最新文章

  1. 看了毁你三观的PCB设计理论 高速PCB外层还要不要覆铜了
  2. nodejs(6)express学习
  3. 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
  4. (Z)复杂繁琐的芯片设计流程
  5. python 裁判文书网_python - 用selenium模拟登陆裁判文书网,系统报错找不到元素。...
  6. golang依赖接口,不要依赖具体实现
  7. mysqldump备份原理6
  8. 最简单的图形用户代码_简单几句代码,画出精美的图形,快跟着学起来~
  9. 计算机网络考试卷2014B答案,计算机网络考试卷2014B
  10. 算法(0)—— 打造一个C开发库
  11. 论文笔记_S2D.22_2015-CVPR_利用深度特征回归和分层CRFs对单目图像进行深度和表面法线估计
  12. 软件架构思想和系统架构图
  13. 最新搜狗收录提交工具分享
  14. 小程序_古诗词背诵小程序
  15. apple怎么其他_如何取消您的Apple Music(或任何其他)订阅
  16. iis7.5如何将应用程序池的启动模式(startMode)从onDemand(需要时)更改为AlwaysRunning(一直运行)?
  17. C语言基础编程(switch语句)
  18. 数据库中的锁机制(数据库中有哪些锁)
  19. 恐龙灭绝的真正原因是什么?撞击事件和火山喷发
  20. OpenCV中背景建模方法mog2——Adaptive GMM算法小结

热门文章

  1. 大数据教你实现预测未来,这不是梦
  2. 这是我见过的最全的训练数据集,没有之一!
  3. php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...
  4. linux开机自动挂载硬盘指定权限,Linux开机自动挂载硬盘
  5. mysql必须的组件_mysql innodb的重要组件
  6. 截获android屏幕服务,如何捕获android设备屏幕内容?
  7. python拼图游戏_乐趣无穷的Python课堂
  8. 7搭建zabbix_监控03分布式监控Zabbix
  9. cascade down_Cascaded CNN 方法寻找人脸关键点
  10. html位置下移像素点,吃透移动端 1px的具体用法