bool
search_value_loop(
std::
vector
<
int>
&ivec,
const
int
search_value,
std::
vector
<
int>
::
difference_type
&
position){
auto start=ivec.cbegin();
auto end=ivec.cend();
auto mid=start+(end-start)/2;
// std::cout<<*mid<<std::endl;
while(mid!=end && *mid!=search_value){
if(*mid<search_value){
start=mid+1;
}else{
end=mid-1;
}
mid=start +(end-start)/2;
}
if(*mid==search_value){
position=mid-ivec.cbegin()+1;
return true;
}
return false;
}
int main()
{
bool rest;
vector <int> ::difference_type position;
vector <int> ivec={1,2,3,4,18,23,85,122};
rest=search_value_loop(ivec,122,position);
if(!rest){
std::cout<<"no match values"<<std::endl;
}else{
std::cout<<position<<std::endl;
}
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30221425/viewspace-2142580/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30221425/viewspace-2142580/