c++のlower_boundとupper_bound
6007 ワード
lower_boundはval以上の最初の値を見つけ、end uppder_を返さないboundはvalより大きい最初の値を見つけて、endの前提を返します:配列は秩序があります
使用法
リファレンスコード
使用法
template<class ForwardIterator, class Type>
ForwardIterator lower_bound(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
template<class ForwardIterator, class Type, class BinaryPredicate>
ForwardIterator lower_bound(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val,
BinaryPredicate _Comp
);
リファレンスコード
int lower_bound(vector<int> v,int begin,int end,int target){
while(begin < end){
int mid = begin + (end - begin) / 2;
if(v[mid] < target){
begin = mid + 1;
}
else{
end = mid;
}
}
return begin;
}
int upper_bound(vector<int> v,int begin,int end,int target){
while(begin < end){
int mid = begin + (end - begin) / 2;
if(v[mid] <= target){
begin = mid + 1;
}
else{
end = mid;
}
}
return begin;
}