我是C的新手.我在线看到这个代码,它试图在一个向量中找到一个字符串.但是,我注意到了最终的结局:
mid = beg + (end - beg) / 2;
为什么要这样写,为什么不能写成:
mid = (beg + end) /2
是中间=(乞求(结束-1))/ 2一个可行的替代方案?
我很难理解背后的原因.
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; }