lower_bound 和 upper_bound的用法

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
using namespace std;
int a[5]={3,4,11,51,61};
int main()
{
int pos1,pos2;
pos1=lower_bound(a,a+5,4)-a;//返回大于或等于查找值的第一个元素位置
pos2=upper_bound(a,a+5,4)-a;//也就是“元素值>查找值”的第一个元素的位置
printf("%d\n",pos1);
printf("%d\n",pos2);
return 0;
}

时间: 2024-11-06 17:20:45

lower_bound 和 upper_bound的用法的相关文章

C/C++-STL中lower_bound与upper_bound的用法以及cmp函数

转载于:http://blog.csdn.net/tjpuacm/article/details/26389441 不加比较函数的情况: [cpp] view plain copy int a[]={0,1,2,2,3}; printf("%d\n",lower_bound(a,a+5,2,cmp)-a); printf("%d\n",upper_bound(a,a+5,2,cmp)-a); 结果:2 4 lower的意义是对于给定的已经排好序的a,key最早能插入

关于lower_bound( )和upper_bound( )的常见用法

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end.通过返回的地址减去起始地址begin,得到找到数字在数组中的下标. upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num

STL之std::set、std::map的lower_bound和upper_bound函数使用说明

由于在使用std::map时感觉lower_bound和upper_bound函数了解不多,这里整理并记录下相关用法及功能. STL的map.multimap.set.multiset都有三个比较特殊的函数,lower_bound.upper_bound.equal_range. 原型如下: iterator lower_bound (const value_type& val) const; iterator upper_bound (const value_type& val) con

关于lower_bound()和upper_bound()

关于lower_bound()和upper_bound(): 参考:关于lower_bound( )和upper_bound( )的常见用法 注意:查找的数组必须要是排好序的.因为,它们查找的方式也是二分查找,所以,复杂度为log(n) ①从小到大排序 lower_bound(begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到并返回该数字的地址,不存在则返回end.通过返回的地址减去起始地址begin,得到找到数字在数组中的下标. up

lower_bound与upper_bound

lower_bound与upper_bound 1.作用 这两个是STL中的函数,作用很相似: 假设我们查找x,那么: lower_bound会找出序列中第一个大于等于x的数 upper_bound会找出序列中第一个大于x的数 没错这俩就差个等于号╮(╯▽╰)╭ 2.用法 以下都以lower_bound做栗子 (因为upper_bound做出的栗子不好吃) (其实就是我懒得打两遍) 它们俩使用的前提是一样的:序列是有序的 对于一个数组a,在[1,n]的区间内查找大于等于x的数(假设那个数是y),

二分lower_bound()与upper_bound()的运用

<span style="color:#6633ff;">/* G - 二分 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status Description Given n points (1 dimensional) and q segments, you have to find the number of points that lie in each o

[STL] lower_bound和upper_bound

STL中的每个算法都非常精妙, ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置. ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回一个非递减序列[first, last)中第一个大于val的位置.

二分检索函数lower_bound()和upper_bound()

二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower_bound():找到大于等于某值的第一次出现upper_bound():找到大于某值的第一次出现必须从小到大排序后才能用 内部查找方式为二分查找,二分查找必定需要排序 返回值为地址 二.代码及结果 1 /* 2 二分检索函数lower_bound()和upper_bound() 3 lower_bound(

stl map中的lower_bound和 upper_bound

map中的lower_bound和upper_bound的意思其实很简单,就两句话: map::lower_bound(key):返回map中第一个大于或等于key的迭代器指针 map::upper_bound(key):返回map中第一个大于key的迭代器指针 所以,理解这两个函数请不要按照字面意义思考太复杂,因为仅仅是不小于(lower_bound)和大于(upper_bound)这么简单. 看两个msdn里的例子 1 // map_upper_bound.cpp 2 // compile