STLマップ/セット/マルチセット/マルチマップで、検索キー以上の最初の値を見つける方法

StackOverflow https://stackoverflow.com/questions/176376

  •  05-07-2019
  •  | 
  •  

質問

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

{1、2、6、8}

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

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

役に立ちましたか?

解決

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

他のヒント

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.

lower_bound

エラー。

検索アイテム以上のセットがセットにない場合、end()を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top