『C++Primer』ノート-反復器iterator

1598 ワード

1.各コンテナタイプはvectorなどの独自の反復器タイプを定義します.
     vector<int>::iterator iter;


この文はiterという変数を定義し、vectorで定義されたiteratorタイプのデータ型です.各標準ライブラリコンテナタイプには、反復器の実際のタイプと同じ意味を持つiteratorというメンバーが定義されています. 
2.beginとend操作
各コンテナにはbeginとendという名前の関数のペアが定義され、反復器を返します.のように
果物容器に要素がある場合、beginから返される反復器は最初の要素を指します.
vector::iterator iter = ivec.begin(); 
end操作で返される反復器はvectorの「末端要素の次」を指します.「エンド反復器を超えた」(off-the-end iterator).存在しない要素を指していることを示します. 
end操作によって返される反復器はvectorの実際の要素を指していません.逆に、vectorのすべての要素を処理したことを示す哨兵(sentinel)の役割を果たしています. 
3.vector反復器の自己増加と解参照演算
反復タイプは、デリファレンスオペレータ(*)を使用して反復が指す要素にアクセスします.
*iter = 0;
デリファレンスオペレータは、反復器が現在指している要素を返します.iterがvectorオブジェクトivecの第1の要素を指すと仮定すると、*iterとivec[0]は同じ要素を指す. 
4.反復アプリケーションのプログラム例
for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)

         *iter = 0;  // set element to which iter refers to 0

5.
const_iterator

前のプログラムはvector::iteratorでvectorの要素値を変更します.各コンテナタイプにはconst_という名前も定義されています.iteratorのタイプです.このタイプはコンテナ内の要素の読み取りにのみ使用できますが、値を変更することはできません. 
 // use const_iterator because we won't change the elements

     for (vector<string>::const_iterator iter = text.begin();iter != text.end(); ++iter)
         cout << *iter << endl; // print each element in text
6.
vector 。 , push_back , vector 。