ostream_iterator詳細解析

來源:互聯網
上載者:User

      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
{  
public:
        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適配器。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.