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