*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights reserved.
*文件名称:main.cpp
*作者:孙亚茹
*完成日期:2016年6月9日
*问题描述:阅读程序,解释执行结果。
*//
#include <iterator>
#include <list>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int ia[5] = {1,2,3,4};
list<int> id(ia, ia+4);
ostream_iterator<int> outite(cout, " ");
copy(id.begin(), id.end(), outite);
cout << endl;
copy(ia+1, ia+2, front_inserter(id));
copy(id.begin(), id.end(), outite);
cout << endl;
copy(ia+3, ia+4, back_inserter(id));
copy(id.begin(), id.end(), outite);
cout << endl;
list<int>::iterator ite = find(id.begin(), id.end(), 3);
copy(ia+0, ia+2, inserter(id, ite));
copy(id.begin(), id.end(), outite);
cout << endl;
copy(id.rbegin(), id.rend(), outite);
cout << endl;
return 0;
}
程序分析:
由list<int> id(ia, ia+4);知id里面的数是1 2 3 4,所以第一次输出为1 2 3 4.
copy(ia+1, ia+2, front_inserter(id));区间前闭后开,就是把2插入1234前面,结果为:2 1 2 3 4.
copy(ia+3, ia+4, back_inserter(id));是将4插在21234后面,结果为:2 1 2 3 4 4.
list<int>::iterator ite = find(id.begin(), id.end(), 3);找到位置3,copy(ia+0, ia+2, inserter(id, ite));将1 2插到3的前面,结果为:2 1 2 1 2 3 4 4.
copy(id.begin(), id.end(), outite);倒序输出,结果为:4 4 3 2 1 2 1 2.