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;
}
}
迭代器二分查找
最新推荐文章于 2024-03-06 10:08:51 发布