ostream_iterator属于I/O流STL适配器,用于获取一个元素,同时保存在缓冲器中,可以供Cout输出。如果把cout看做成一个对象,那么在Cout对象当中存在一片用于数据存储的区域。ostream_iterator在STL中一般配合copy函数一起使用,如下代码;
ostream_iterator output(cout, " "); //关联cout,设置分隔符
copy(ivec.begin(), ivec.end(), output); //元素拷贝到ostream_iterator所指向的对象cout
cout; //显示cout的值
ostream_iterator中,template如果是一个类名称的时候,那么这个类必须实现重载”
class Person
{
public:
Person(const string& firstname,const string& lastname)
{
this->firstname=firstname;
this->lastname=lastname;
}
//如果没有const,那么下面的copy()会报告一堆错误,重载为const是一个好习惯
friend ostream& operator {
os }
private:
string firstname ;
string lastname ;
friend class PersonSort;
};
class PersonSort
{
bool operator()(const Person& p1,const Person& p2) const
return (p1.lastname }
int main()
typedef set PersonSet;
PersonSet ps;
ps.insert(Person("hongjian","chen"));
ps.insert(Person("lizhong","li"));
ps.insert(Person("xuan","liu"));
copy(ps.begin(),ps.end(),ostream_iterator(cout,"/n"));
return 0;
}
另外、
template class _Tr = char_traits<_e> >
class ostream_iterator
: public iterator
从这段代码中亦可以发现,ostream_iterator继承iterator,iterator通过output_iterator_tag来标记定义的iterator为ostream适配器。