std :: set:に格納されている値のセットがあるとします。
{1、2、6、8}
そして、たとえば3の検索キーがあります。3を関数に入れて、3以上の最初の値を取得したいのですが、この場合は6を取得したいと思います。
map / set / multimap / and setで提供されるfind()関数は、もちろん、この場合の終了イテレータを返します。この場合に6を返す同様の関数はありますか?
std :: set:に格納されている値のセットがあるとします。
{1、2、6、8}
そして、たとえば3の検索キーがあります。3を関数に入れて、3以上の最初の値を取得したいのですが、この場合は6を取得したいと思います。
map / set / multimap / and setで提供されるfind()関数は、もちろん、この場合の終了イテレータを返します。この場合に6を返す同様の関数はありますか?
はい:upper_bound(X)
より大きい最初の要素を指す反復子を返しますX
。lower_bound(X)
より小さくない最初の要素を指す反復子を返す関数もあります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.