STLマップ/セット/マルチセット/マルチマップで、検索キー以上の最初の値を見つける方法
-
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.
所属していません StackOverflow