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;
}