反復器の反転と反復器の挿入の違い

8197 ワード

逆反復器は名前の通りコンテナを逆操作し、挿入反復器は反復器の付与操作をpush_に変換します.back(),push_front()、insert()操作.反復器を挿入するには、コンテナに対応するpush_を含める必要があります.back(),push_front()、insert()操作で、コンテナを挿入できます.
挿入反復器は3種類あります
  back_insert_iterator(C)コンテナの端にデータを挿入
  front_insert_iterator(C)コンテナ先端にデータを挿入
  insert_iterator(C)コンテナ指定位置にデータを挿入
3つの関数テンプレートに対応
  back_Inserter(c):この反復器はコンテナのpush_を呼び出すback操作は、付与演算子の代わりになります.この反復器のパラメータはコンテナ自体です.
  front_inserter(c):反復器はpush_を使用するfront操作は、付与演算子の代わりになります.パラメータはコンテナ自体です.
Inserter(c,i):この反復器は、割り当て演算子の代わりにコンテナのinsert操作を使用します.この反復器には2つのパラメータがあります.最初のパラメータはコンテナ自体で、2番目のパラメータはコンテナの反復器で、挿入位置を指定します.
 
リバース反復
反復器の挙動を変更するか、ストリームを反復器に包装する. reverse_iterator<>
コンテナ内のデータを逆出力します.
 1 #include <iostream>
 2 #include <cstring>
 3 #include <iterator>
 4 
 5 
 6 int main()
 7 {
 8     char array[] = "abcde";
 9     using namespace std;
10     typedef reverse_iterator<char*> backward_iterator;//
11     backward_iterator b(array+strlen(array));//           
12     backward_iterator end(array);//       
13     for (; b !=end;++b)//           
14     {
15         cout<<*b;//
16     }
17 
18     getchar();
19 }

 
反復の挿入
指定した場所にデータを挿入
 1 #include <iostream>
 2 #include <list>
 3 #include <iterator>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int array[] = {0,1,2,3,4,5,6,7,8,9};
 9     list<int>il;
10     list<int>::iterator it1;
11     copy(array+5,array+10,back_inserter(il));//  il   5 6 7 8 9
12     it1 = il.begin();
13     for(;it1!= il.end();++it1)//   56789
14     {
15         cout<<*it1;
16     }
17     cout<<endl;
18 
19     typedef reverse_iterator<int*>array_reverse_iterator;//     
20     copy(array_reverse_iterator(array+5),array_reverse_iterator(array),front_inserter(il));//    4,3,2,1,0
21 
22     list<int>::iterator it2 = il.begin();
23     for(;it2!= il.end();++it2)//   0123456789
24     {
25         cout<<*it2;
26     }
27     cout<<"inserter"<<endl;
28     int a[] = {0,1};
29     copy(a,a+2,inserter(il,it2));//        
30 
31     it2 = il.begin();
32     for(;it2!= il.end();++it2)//   012345678901
33     {
34         cout<<*it2;
35     }
36     getchar();
37 }

 
まとめ:
反復器を反転-反復器の動作を元の反対にし、++変--、+n変-nなど.
≪反復器の挿入|Insert反復器|Eas≫-指定した位置にデータ、コンテナの頭部または末尾、または任意の位置を挿入しますが、コンテナに対応する機能が含まれていることを保証する必要があります.