迭代器适配器

来源:互联网 发布:js下载弹出路径选择框 编辑:程序博客网 时间:2024/06/05 12:07

#include<iostream>
#include <vector>
#include<algorithm>
#include<iterator>
#include<list>
using namespace std;


void printEle(int n1){
 cout<<n1<<" ";
}

 


int main(){


 //////////////插入迭代器实际上是一个输出迭代器(*it=; ++)///////////////////
 /*int a[]={1,2,3,4,5};
 vector<int> v1(a,a+5);
 //v.push_back(6);
 vector<int> v2;

 back_insert_iterator<vector<int> > bii1(v1);
 //*bii1=8;
 bii1=8;
 for_each(v1.begin(),v1.end(),printEle);
 cout<<endl;
 back_insert_iterator<vector<int> > bii2(v2);
 copy(v1.begin(),v1.end(),bii2);//把v1复制到bii2中
 
 for_each(v2.begin(),v2.end(),printEle);
 cout<<endl;


 back_inserter(v1)=9;

 for_each(v1.begin(),v1.end(),printEle);
 cout<<endl;

 copy(v1.begin(),v1.end(),back_inserter(v2));//在尾部插入v2

 for_each(v2.begin(),v2.end(),printEle);
 cout<<endl;
 */
 ////////////////////////////////////////////////////////////////////////
 /*
 int b[]={1,2,3,4,5};
 list<int> li(b,b+5);
 list<int> li2;

 front_insert_iterator<list<int>> fii(li);
 fii=0;
 for_each(li.begin(),li.end(),printEle);
 cout<<endl;
 
 copy(li.begin(),li.end(),front_inserter(li2));

 for_each(li2.begin(),li2.end(),printEle);
 cout<<endl;
 */

 ///IO流迭代器:
 /////////////////输出流迭代器(ostream_iterator):
  //                    重载的运算符:*it=; ++
 //               输入流迭代器(istream_iterator):
 //                    重载的运算符:=*it; ->; ++; ==; !=
 ////////////////////////////////////////////////////
 int dd[]={1,2,3,4,5};

 vector<int> f1(dd,dd+5);

 //copy from v1 to cout object
 copy(f1.begin(),f1.end(),ostream_iterator<int>(cout," "));
 
 cout<<endl;
 
 vector<int>f2;
 copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(f2));

 copy(f2.begin(),f2.end(),ostream_iterator<int>(cout," "));

 cout<<endl;
 ///////////////////////////////////////

 return 0;
}

 

原创粉丝点击