STLのiterator(反復器)


3.反復器の概要
標準ライブラリでは、vectorオブジェクトの要素にアクセスするために下付きラベルを使用するほか、要素にアクセスする方法として反復器を使用します.反復器は、コンテナ内の要素をチェックし、要素を巡回するデータ型です.
百科事典:
反復器(iterator)は、標準テンプレートコンテナ内の要素の一部またはすべてを巡回するために使用できるオブジェクトです.各反復器オブジェクトは、コンテナ内の決定されたアドレスを表します.反復器は、通常のポインタのインタフェースを変更します.反復器とは、反復器のような動作を反復器と呼ぶことができる概念的な抽象です.
1.コンテナのiteratorタイプ
各コンテナタイプにはvectorなどの独自の反復器タイプが定義されています.
vector::iterator iter;変数名はiterで、vectorの要素を読み書きできます.
2.beginとend操作
各コンテナはbeginとendという名前の関数の列を定義し、反復器を返す.コンテナに要素がある場合は、beginから返される要素が最初の要素を指します.
vector::iterator iter=v.begin();
vが空でない場合、iterはv[0]を指す.
endによって返される反復器は最後の要素の次を指し、vが空の場合、beginとendは同じである.
*iter;反復器iterが指す要素の参照を返します.
++iter反復器を1つ前に移動します(反対--iter)
==と!オペレータを使用して、2つの反復器を比較します.2つの反復器が同じ要素を指している場合、それらは等しいです.そうしないと待ちたくありません.
例:
#include <iostream>
#include<vector>
using namespace std;
int main (){
<span style="white-space:pre">	</span>vector <int>p;
<span style="white-space:pre">	</span>p.push_back(1);
<span style="white-space:pre">	</span>p.push_back(2);
<span style="white-space:pre">	</span>p.push_back(3);
<span style="white-space:pre">	</span>p.push_back(5);
<span style="white-space:pre">	</span>p.push_back(6);
<span style="white-space:pre">	</span>auto *ite=p.begin();//auto    vector <int>::iterator
<span style="white-space:pre">	</span>while(ite!=p.end())
<span style="white-space:pre">		</span>cout<<*ite++<<endl;
<span style="white-space:pre">	</span>return 0;
}

あるタイプが反復器であると認定し、コンテナの要素にアクセスしたり、ある要素から別の要素に移動したりすることができます.