《《C++Primer》》第五版中文版359页
#include<iostream>
#include<vector>
#include<sstream>
#include<fstream>
#include<cstdlib>
#include<list>
#include<cstring>
#include<string>
#include<deque>
using namespace std;
int main()
{
list<int>ilis={1,2,3,4};
list<int> ilis2,ilis3,ilis4;
copy(ilis.begin(),ilis.end(),back_inserter(ilis2));
typedef list<int>::iterator QQ;
QQ it=ilis2.begin();
while(it!=ilis2.end())
{
cout<<*it<<" ";
++it;
}
cout<<endl;
copy(ilis.begin(),ilis.end(),front_inserter(ilis3));
it=ilis3.begin();
while(it!=ilis3.end())
{
cout<<*it<<" ";
++it;
}
cout<<endl;
copy(ilis.begin(),ilis.end(),inserter(ilis4,ilis4.begin()));
it=ilis4.begin();
while(it!=ilis4.end())
{
cout<<*it<<" ";
++it;
}
return 0;
}
三个插入迭代器,前插和后插相对好理解一些。inserter插入迭代器的特别之处是给出了一个给定的位置,书中貌似没有强调这个位置可以是不存在的???。如本题中给出的空的ilis4.begin().个人理解这样可以的原因是 每次插入的时候都不会重新计算这个迭代器,因为插入的结果顺序没有变
对inserter的理解有点问题。。。。