4
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
这是我的理解:C++ STL - 为什么要用(W <* I),而不是(W == * I)
的返回值*我从LOWER_BOUND总是不小于比w大。 换句话说,w <= *i
这里有一个问题,为什么不直接使用以下条件检查?
if ((i != vw.end()) && (w == *i)) // why not use (w == *i)?
// found w in vw
谢谢
你是说Widget只需要重载operator <而不是operator ==? - 谢谢 – q0987 2011-04-29 04:22:36
@ q0987是的,这就是我的意思。 – zneak 2011-04-29 04:23:13