4

std :: set:に格納されている値のセットがあるとします。

{1、2、6、8}

そして、たとえば3の検索キーがあります。3を関数に入れて、3以上の最初の値を取得したいのですが、この場合は6を取得したいと思います。

map / set / multimap / and setで提供されるfind()関数は、もちろん、この場合の終了イテレータを返します。この場合に6を返す同様の関数はありますか?

4

3 に答える 3

12

はい:upper_bound(X)より大きい最初の要素を指す反復子を返しますXlower_bound(X)より小さくない最初の要素を指す反復子を返す関数もありますX。したがって、半開区間のすべての要素は[lower_bound(X), upper_bound(X))X に等しくなります。

于 2008-10-06T22:04:10.913 に答える
3

upper_bound関数が必要です。

map<int, int> mymap = { 1,2,6,8 };
map<int,int>::iterator i = mymap.upper_bound(3); // returns an iterator to the '6' element.
于 2008-10-06T22:03:37.843 に答える
2

下界

おっと、アルゴリズムではなく、メンバー関数であるlower_boundを意味していました。

セット内に検索項目以上のものがない場合は、end() が返されます。

于 2008-10-06T22:03:40.963 に答える