请帮忙看看这段折半查找代码解决方法

请帮忙看看这段折半查找代码
C/C++ code
bool fd(vector <int> &vec,int num)
{
    bool rtr = false;
    bs(vec);

    vector <int>::size_type i = 0, beg = 0, end = vec.size() - 1, mid = 0;
    while (beg < vec.size() && beg >= 0 && end >= 0 && end < vec.size() && vec[beg] <= vec[end])
    {
        mid = (beg + end)/2;
        if ( vec[mid] < num)
            beg = mid + 1;
        else if ( vec[mid] > num )
            end = mid - 1;
        else {
            rtr = true;
            break;
        }
    }

    return rtr;
}


这段代码运行起来没有问题,就是我的 while 判断条件比其他写的长得多。。。可是如果不判断,那么 num 如果特别大或者特别小就会出现 out of range 错误。怎么改的简洁点呢?

------解决方案--------------------
beg >= 0 ?这句话貌似没必要吧因为beg始终没有减过不存在小于0的情况
------解决方案--------------------
bool fd(vector <int> &vec,int num)
{
bs(vec);

vector <int>::size_type i = 0, beg = 0, end = vec.size() - 1, mid = 0;
while (beg<=end)
{
mid = (beg + end)/2;
if ( vec[mid] < num)
beg = mid + 1;
else if ( vec[mid] > num )
end = mid - 1;
else return true;
}

return false;
}