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