C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのupper_bound


これがC++STLのupper_bound()関数であることがわかります。この関数は、コンテナー内の最初の要素を指すイテレーターを返します。このイテレーターは、valの後にあると見なされます。構文は次のようになります:

iterator upper_bound (const value_type& val);
const_iterator upper_bound (const value_type& val) const;

戻り値はイテレータであり、valの後にあると見なされるコンテナ内の最初の要素を指します。

#include <iostream>
#include <set>
using namespace std;
int main () {
   set<int> myset;
   set<int>::iterator itlow,itup;
   for (int i = 1; i < 10; i++) myset.insert(i*10);
   itup = myset.upper_bound (60);
   myset.erase(itup);
   cout << "myset contains:";
   for (set<int>::iterator it = myset.begin(); it!=myset.end(); ++it)
   cout << ' ' << *it;
}

出力

myset contains: 10 20 30 40 50 60 80 90

  1. C++の二分探索木イテレータ

    二分木用に1つのイテレータを作成するとします。 2つの方法があります。 next()メソッドは次の要素を返し、hasNext()メソッドはブール値を返します。これは次の要素が存在するかどうかを示します。したがって、ツリーが次のような場合- そして、関数呼び出しのシーケンスは、[next()、next()、hasNext()、next()、hasNext()、next()、hasNext()、next()、hasNext()]です。出力は[3,7、true、9、true、15、true、20、false]になります これを解決するには、次の手順に従います- nextとhasNextの

  2. C++でのイテレータの無効化

    C ++には、vector、list、set、mapなどのさまざまなコンテナーがあります。これらのコンテナーを反復処理するには、反復子を使用できます。 C ++でイテレータを使用する場合は注意が必要です。コンテナでイテレータを使用する場合、無効になることがあります。形や大きさを変えると、こういう問題に直面することがあります。次の例では、無効化の問題を特定できます。 サンプルコード #include <iostream> #include <vector> using namespace std; int main() {    vector <