I'm new to C++. I saw this code online, where it is trying to find a string within a vector. However, I have noticed right towards the end:
mid = beg + (end - beg) / 2;
Why does it have to be written in this way, why can't it be written as:
mid = (beg + end) /2
Is mid = (beg + (end - 1)) / 2 a feasible alternative?
I'm struggling to understand the reason behind it.
vector<string> text = {"apple", "beer", "cat", "dog"};
    string sought = "beer";
    auto beg = text.begin(), end = text.end();
    auto mid = text.begin() + (end - beg) / 2;
    while (mid != end && *mid != sought){
        if(sought < *mid){
            end = mid;
        } else {
            beg = mid + 1;
        }
        mid = beg + (end - beg) / 2;
    }