天天看点

ostream_iterator详细解析

      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适配器。

上一篇: 问津BSTR

继续阅读