C++の双方向イテレータ
ここでは、C++での双方向イテレータの概念を説明します。
- 双方向イテレータは、フォワードイテレータのすべての機能をサポートし、プレフィックスおよびポストフィックスデクリメント演算子もサポートします。
- このタイプのイテレータは、最後と最初のように、双方向で要素にアクセスできます。
- ランダムアクセスイテレータも一種の双方向イテレータです。
- 双方向イテレータには順方向イテレータの機能がありますが、唯一の違いは、このイテレータをデクリメントできることです。
双方向イテレータにはいくつかのプロパティがあります。これらは以下のようなものです。
プロパティ | 表現 |
---|---|
双方向イテレータは、デフォルトで構築可能、コピー割り当て可能、および破棄可能です | A p q(p) q =p |
等式演算子と不等式演算子を使用して比較できます | p ==q p!=q |
これは逆参照できます。間接参照演算子(*)を使用して値を取得できます。 | * p |
可変イテレータは左辺値として逆参照できます | * p =t |
インクリメント演算子(++)とデクリメント演算子(-)を使用してインクリメントまたはデクリメントできます | p ++ q- |
サンプルコード
#include <iostream> #include<iterator> #include<vector> using namespace std; int main() { vector<int> vec{10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; vector<int> ::iterator it; vector<int> :: reverse_iterator rev_it; for(it = vec.begin(); it != vec.end(); it++) cout<<*it<<" "; cout<< endl; for(rev_it = vec.rbegin(); rev_it!= vec.rend(); rev_it++) cout<<*rev_it<<" "; }
出力
10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10
-
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#のイテレータ
イテレータは、コレクションに対してカスタム反復を実行します。これは、yield returnステートメントを使用して、各要素を一度に1つずつ返します。イテレータは現在の場所を記憶し、次の反復で次の要素が返されます。 以下は例です- 例 using System; using System.Collections.Generic; using System.Linq; namespace Demo { class Program { public static IEnumerable<string> displa