2012-03-12 8 views
0

documentation for upper_bound状態:STL upper_boundの定義に不一致がありますか?

...それは)最初の、最後の順序付けられた範囲内の要素の値を見つけようと...私は[最初、最後に遠いイテレータを返すUPPER_BOUND)そのようなため、その[first、i)のすべての反復子j、値< * jはfalseです。しかし

、我々はupper_bound(v.begin(), v.end(), 5)v.end()を返します呼び出し、番号1、2、および3が含まれているvector<int> vを持っている場合。しかし、定義に基づいて、v.end()[v.begin, v.end())の範囲内にありません。定義の要件に適合するイテレータはありません。この定義は、この場合に何が起こるかを明示的に記述していないだけで怠惰ですか?

答えて

11

SGIのマニュアルは該当しません。– C++標準は、読んでおくべき内容です。 C++ 11§25.4.3.2引用:

戻り値:!(value < *j)又はcomp(value, *j) == false遠いイテレータiの範囲[first,last]ような範囲[first,i)で任意イテレータjについては、以下に対応する条件が成立していることです。

+0

彼は本当にSGIのSTL ... – PlasmaHH

+3

@PlasmaHH意味場合には、関連性がある:フェアポイントを、私は誰もが本当にSGIのSTLを意味見たことがありませんので、私はOPはその仮定の下に行きますよ標準ライブラリアルゴリズムを参照していました。 – ildjarn

+0

私の問題はSGI STLでの言い回しでしたが、私の混乱は解消され、C++標準はあいまいではありません。レッスンで学んだことは、SGIではなく標準を参照することです。 – Matt

関連する問題