编写程序使用 replace_copy 将一个容器中的序列复制给另一个容器,并将前一个序列中给定的值替换为指定的新值。分别使用 inserter、back_inserter 和 front_inserter 实现这个程序。讨论在不同情况下输出序列如何变化。
/*
back_inserter 从后面插入 每一个都在前一个的后面
front_inserter 从前面插入 每一个都在前一个的前面
inserter 后面插入,需要有一个插入位置
*/
#include
#include
#include
#include
#include
using namespace std;
int main()
{
listivec1,ivec2;
int ival;
cout<<"input ival;"<>ival)
ivec1.push_back(ival);
cin.clear();
int value;
cout<<"input new value"<>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::iterator it=ivec2.begin();it!=ivec2.end();++it)
{
cout<<*it<<" ";
}
cout<