upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法

本文详细介绍了C++中lower_bound()和upper_bound()函数的用法。这两个函数利用二分查找在排好序的数组中查找特定数字,分别能找到第一个大于或等于、大于指定数字的元素地址。文中还给出了在不同排序顺序数组中的使用示例,以及求有序数组中某元素个数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头文件:#include

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中,

lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

在从大到小的排序数组中,重载lower_bound()和upper_bound()

lower_bound( begin,end,num,greater() ):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num,greater() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

#include

using namespace std;

const int maxn=+;

const int INF=*int(1e9)+;

#define LL long long

int cmd(int a,int b){

return a>b;

}

int main(){

int num[]={,,,,,};

sort(num,num+); //按从小到大排序

int pos1=lower_bound(num,num+,)-num; //返回数组中第一个大于或等于被查数的值

int pos2=upper_bound(num,num+,)-num; //返回数组中第一个大于被查数的值

cout<

cout<

sort(num,num+,cmd); //按从大到小排序

int pos3=lower_bound(num,num+,,greater())-num; //返回数组中第一个小于或等于被查数的值

int pos4=upper_bound(num,num+,,greater())-num; //返回数组中第一个小于被查数的值

cout<

cout<

return ;

}

#include

#include

using namespace std;

int main() {

int a[] = {, , , , , };

//int pos = *lower_bound(a, a + 6, 7);

//int res = *upper_bound(a, a + 6, 7);

//cout << pos << endl;

//cout << res << endl;

cout << &a[] - a<< endl;

cout << lower_bound(a, a + , ) - a<< endl;

return ;

}

原作者:https://blog.youkuaiyun.com/qq_40160605/article/details/80150252

求长度为  n 的有序数组 a 中 k 的个数 :

upper_bound(a, a+n, k) - lower_bound(a, a+n, k)

lower&lowbar;bound&lpar; &rpar;和upper&lowbar;bound&lpar; &rpar;的常见用法

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数 ...

lower&lowbar;bound&lpar; &rpar;和upper&lowbar;bound&lpar; &rpar;的基本用法

lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end.通过返回的地址减去起始地址 ...

lower&lowbar;bound 和 upper&lowbar;bound 功能和用法

以前用这两个函数的时候,简单看了几句别人的博客,记住了大概,用的时候每用一次就弄混一次,相当难受,今天对照着这两个函数的源码和自己的尝试发现:其实这两个函数只能用于 "升序" 序列 ...

关于lower&lowbar;bound&lpar;&rpar;和upper&lowbar;bound&lpar;&rpar;

关于lower_bound()和upper_bound(): 参考:关于lower_bound( )和upper_bound( )的常见用法 注意:查找的数组必须要是排好序的.因为,它们查找的方式也是 ...

lower&lowbar;bound和upper&lowbar;bound的实现和基本用法

最近一直在学dp,但是感觉进度明显慢了很多,希望自己可以加一把劲,不要总是拖延了... 在LIS的优化中我遇到了二分查找的问题,之前也知道lower_bound和upper_bound两个函数,但是没 ...

lower&lowbar;bound&lpar;&rpar;和upper&lowbar;bound&lpar;&rpar;用法详解

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. lower_bound( begin,end,num):从数组的begin位置到end ...

STL之std&colon;&colon;set、std&colon;&colon;map的lower&lowbar;bound和upper&lowbar;bound函数使用说明

由于在使用std::map时感觉lower_bound和upper_bound函数了解不多,这里整理并记录下相关用法及功能. STL的map.multimap.set.multiset都有三个比较特殊 ...

C&plus;&plus; STL lower&lowbar;bound&lpar;&rpar;和upper&lowbar;bound&lpar;&rpar;

lower_bound()和upper_bound()用法 1.在数组上的用法 假设a是一个递增数组,n是数组长度,则 lower_bound(a, a+n, x):返回数组a[0]~a[n-1]中, ...

STL:map中的lower&lowbar;bound和upper&lowbar;bound

今天在做leetcode的Longest Increasing Subsequence题目时,需要用到二分查找,于是翻看了这本书,发现map里面有lower_bound和 ...

随机推荐

嵌入式Linux驱动学习之路&lpar;十六&rpar;输入子系统

以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以 ...

Elasticsearch——禁止Body中的index覆盖Url中的index参数

本篇继续一下Elasticsearch日常使用的技巧翻译. 在Elasticsearch有很多的api支持在body中指定_index等信息,比如mget或者msearch以及bulk. 默认的情况下 ...

2015国产犯罪传记《暴力天使》HD720P&period;泰语中字

导演: 吴强编剧: 阮明玉主演: 张玉英 / 金理 / 至宝类型: 传记语言:泰语制片国家/地区: 中国大陆上映日期: 2016年3月25日片长: 92分钟又名: Huong Ga暴力天使的剧情简介 ...

iOS - Swift SingleClass&Tab;&Tab;单例类

前言 单例对象能够被整个程序所操作.对于一个单例类,无论初始化单例对象多少次,也只能有一个单例对象存在,并且该对象是全局的,能够被整个系统访问到. 单例类的创建 1.1 单例类的创建 1 单例类的创建 ...

python编写规范

一.说明 二.内容 1. 代码布局 1.1 缩进 1.2 表达式和语句中的空格 1.3 行的最大长度 1.4 空行... 1.5 编码... 2. 语句... 2.1 标准头部... 2.2 导入(i ...

bzoj2800

这题好难,翻了一下波兰文的题解……这好像是当年唯一没人A的题目 首先区间修改不难想到差分,我们令d1=x1,dn+1=-xn,di=xi-xi-1 注意Σdi=0,这样对于[l,r]的修改(比如+a) ...

C 数据结构1——线性表分析(顺序存储、链式存储)

之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug ...

ios中的界面跳转方式

ios中,两种界面跳转方式 1.NavgationController本身可以作为普通ViewController的容器,它有装Controller的栈,所以可以push和pop它们,实现你所说的跳转 ...

URI ,URL 和 URN

URI : 统一资源标识符,用来唯一标识互联网资源,包括URL和URN URL:统一资源定位器 包含: 协议,域名,端口,路由,参数,hash https://i.cnblogs.com/EditPo ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值