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
(== * I W)ここで(<* I w)のではなく、が私の理解です:!C++ STL - なぜ使用
の戻り値* iの LOWER_BOUNDからは常に小さくありませんwのそれよりも大きい。 つまり、w <= *i
ここに質問があります。なぜ、次の条件を直接チェックしてみませんか?
if ((i != vw.end()) && (w == *i)) // why not use (w == *i)?
// found w in vw
暗黙のインタフェース<algorithm>
は、並べ替えに使用するとかのようなものが唯一のデータ型に定義する<
オペレータを必要とするため、あなたに
ウィジェットは演算子==ではなく演算子<をオーバーロードする必要があるだけですか? - ありがとうございます。 – q0987
@ q0987はい、そうです。 – zneak