ostream_iterator详细解析

本文介绍了C++ STL中的ostream_iterator,一种用于将容器中的元素输出到输出流如cout的迭代器适配器。文章通过实例展示了如何使用ostream_iterator与copy函数配合工作,并解释了其内部原理。
摘要由CSDN通过智能技术生成

ostream_iterator属于I/O流STL适配器,用于获取一个元素,同时保存在缓冲器中,可以供Cout输出。如果把cout看做成一个对象,那么在Cout对象当中存在一片用于数据存储的区域。ostream_iterator在STL中一般配合copy函数一起使用,如下代码;

ostream_iterator<int> output(cout, " "); //关联cout,设置分隔符 <br> copy(ivec.begin(), ivec.end(), output); //元素拷贝到ostream_iterator所指向的对象cout <br> cout; //显示cout的值 </int>

ostream_iterator<template>中,template如果是一个类名称的时候,那么这个类必须实现重载” <table cellspacing="0" cellpadding="2" width="777" border="1"><tbody><tr> <td valign="top" width="775"> <p>class Person <br>{ <br>public: <br> Person(const string&amp; firstname,const string&amp; lastname) <br> { <br> this-&gt;firstname=firstname; <br> this-&gt;lastname=lastname; <br> } <br>//如果没有const,那么下面的copy()会报告一堆错误,重载为const是一个好习惯 <br> friend ostream&amp; operator { <br> os } <br>private: <br> string firstname ; <br> string lastname ; <br> friend class PersonSort; <br>}; <br>class PersonSort <br>{ <br>public: <br> bool operator()(const Person&amp; p1,const Person&amp; p2) const <br> { <br> return (p1.lastname<p2.lastname></p2.lastname> } <br>}; <br>int main() <br>{ <br> typedef set<person> PersonSet; <br> PersonSet ps; <br> ps.insert(Person("hongjian","chen")); <br> ps.insert(Person("lizhong","li")); <br> ps.insert(Person("xuan","liu")); <br>copy(ps.begin(),ps.end(),ostream_iterator<person>(cout,"/n")); <br>return 0; <br>}</person></person></p> </td> </tr></tbody></table> 另外、 <p>template<class _u class _e="char,"></class> class _Tr = char_traits<_e> &gt; <br> class ostream_iterator <br> : public iterator<output_iterator_tag void></output_iterator_tag></_e></p> 从这段代码中亦可以发现,ostream_iterator继承iterator,iterator通过output_iterator_tag来标记定义的iterator为ostream适配器。 </template>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值