#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;
}