vector<Widget> vw;
// populate vw
sort(vw.begin(), vw.end());
Widget w;
vector<Widget>::iterator i = lower_bound(vw.begin(), vw.end(), w);
if ( (i != vw.end()) && !(w < *i) ) // Yes, it is correct!
// found w in vw
Вот мое понимание:
Возвращаемое значение * i от lower_bound всегда НЕ меньше значения w .
Другими словами, w <= *i
Вот вопрос, почему бы не использовать непосредственно следующее условие для проверки?
if ( (i != vw.end()) && (w == *i) ) // why not use (w == *i)?
// found w in vw
спасибо