天天看點

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

繼續閱讀