编写程序使用 replace_copy 将一个容器中的序列复制给另一个容器,并将前一个序列中给定的值替换为指定的新值。分别使用 inserter、back_inserter 和 front_inserter 实现这个程序。讨论在不同情况下输出序列如何变化。
/*
back_inserter 从后面插入 每一个都在前一个的后面
front_inserter 从前面插入 每一个都在前一个的前面
inserter 后面插入,需要有一个插入位置
*/
#include <iostream>
#include <string>
#include <list>
#include<algorithm>
#include<iterator>
using namespace std;
int main()
{
list<int>ivec1,ivec2;
int ival;
cout<<"input ival;"<<endl;
while(cin>>ival)
ivec1.push_back(ival);
cin.clear();
int value;
cout<<"input new value"<<endl;
cin>>value;
//back_inserter 创建使用 push_back 实现插入的迭代器。
//replace_copy(ivec1.begin(),ivec1.end(),back_inserter(ivec2),0,value);
//front_inserter,使用 push_front 实现插入。 vector 不可以使用
//replace_copy(ivec1.begin(),ivec1.end(),front_inserter(ivec2),0,value);
/*inserter,使用 insert 实现插入操作。除了所关联的容器外,inserter
还带有第二实参:指向插入起始位置的迭代器。 */
replace_copy(ivec1.begin(),ivec1.end(),inserter(ivec2,ivec2.begin()),0,value);
for(list<int>::iterator it=ivec2.begin();it!=ivec2.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}