ostream_iterator详细解析
2016-05-22 09:40
459 查看
1.istream_iterator 在<iterator>头文件的定义中
定义istream_iterator变量的方法为
istream_iterator<T> in(strm); (其中T指明此istream_iterator的输入类型 , strm为istream_iterator指向的流)
提供了输入操作符(>>)和 输出操作符 (<<)的任何类型都可以创建 istream_iterator 对象和ostream_iteratorcfq对象,即对自己的类重载了这两个函数:
istream &operator >> (istream &is, &MyClass c);
和 ostream &operator << (ostream &os , const &MyClass c);
2. ostream_iterator属于I/O流STL适配器,用于获取一个元素,同时保存在缓冲器中,可以供Cout输出。如果把cout看做成一个对象,那么在Cout对象当中存在一片用于数据存储的区域。ostream_iterator在STL中一般配合copy函数一起使用,如下代码;
ostream_iterator中,template如果是一个类名称的时候,那么这个类必须实现重载”<<”输出运算符号,用于数据的输出。如下代码;
另外、
template class _Tr = char_traits<_E>>
classostream_iterator
: public iterator
从这段代码中亦可以发现,ostream_iterator继承iterator,iterator通过output_iterator_tag来标记定义的iterator为ostream适配器。
定义istream_iterator变量的方法为
istream_iterator<T> in(strm); (其中T指明此istream_iterator的输入类型 , strm为istream_iterator指向的流)
提供了输入操作符(>>)和 输出操作符 (<<)的任何类型都可以创建 istream_iterator 对象和ostream_iteratorcfq对象,即对自己的类重载了这两个函数:
istream &operator >> (istream &is, &MyClass c);
和 ostream &operator << (ostream &os , const &MyClass c);
2. 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的值 |
class Person { public: Person(const string& firstname,conststring& lastname) { this->firstname=firstname; this->lastname=lastname; } //如果没有const,那么下面的copy()会报告一堆错误,重载为const是一个好习惯 friend ostream& operator<<(ostream& os,constPerson& p) { os< } private: string firstname ; string lastname ; friend class PersonSort; }; class PersonSort { public: bool operator()(const Person& p1,constPerson& 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>>
classostream_iterator
: public iterator
从这段代码中亦可以发现,ostream_iterator继承iterator,iterator通过output_iterator_tag来标记定义的iterator为ostream适配器。
相关文章推荐
- 串口调试助手
- mysql INFORMATION_SCHEMA信息数据库
- 1006 等差数列
- 畅通工程(MST)
- 《学习OpenCV》课后习题解答7
- 面试中的排序算法总结
- WPF 之 资源(Resource)
- 手势类--GestureDetector的使用
- java 输入方法
- 搭建 Struts2 的环境:
- admob广告条下方显示
- 算法之冒泡排序
- CentOS-6.5-x86_64 安装 apache-tomcat-7.0.68.tar.gz
- Programming Scala第5章demo02 Option类型
- emulating ionic really slow even on genymotion just using the “tabs” example
- 通过域名获取IP地址
- NYoj_20吝啬的国度
- 使用 arch-ppa 创建你自己的 Arch Linux 软件库
- NYoj_20吝啬的国度
- SpringMVC上下文父子容器