其他分享
首页 > 其他分享> > STL之upper_bound与lower_bound用法

STL之upper_bound与lower_bound用法

作者:互联网

其实就是二分查找

(1)upper_bound是查找序列中第一个严格大于目标值的位置

(2)lower_bound是查找序列中第一个大于等于目标值得位置

(3)两个函数如果没有找到结果,返回数组的end

(4)一般用于查找vector或者普通数组、

// 用于vector,可以结合迭代器
vector<int> v={0 ,2 ,1 ,4 ,7 ,6};
vector<int>::iterator up1;
up1=upper_bound(v.begin(),v.end(),3);
cout<<up1-v.begin()<<endl;

数组中:

int a[6]={1,3,5,6,7,9};
int temp=upper_bound(a,a+6,7)-a; 
// 这里减掉a的目的是获得位置,一般都要这么用,因为upper_bound返回值不是一个可以直接接受的int而是一个地址
cout<<temp<<endl;

使用这两个函数的时候需要algorithm库;使用这两个函数的时候序列应是单调的,否则二分查找将失效。

标签:upper,STL,bound,查找,int,vector,数组
来源: https://www.cnblogs.com/CYLSY/p/16053066.html