首页 > 代码库 > C++零碎知识点
C++零碎知识点
流迭代器
2017-05-21 17:05:51
- 流迭代器是标准模板库STL中的,是类模板,流迭代器实例化之后即可以和任何接受对应迭代器的函数一起使用(可以将流看做一个容器,把数据存储在一个连续的缓冲区中,具有迭代器的功能和类似使用)。
- istream_iterator 和ostream_iterator都在<iterator>头文件的定义中。
- 提供了输入操作符(>>)和 输出操作符 (<<)的任何类型都可以创建 istream_iterator 对象和ostream_iterator对象,即对自己的类重载了这两个函数:istream& operator >> (istream &is, &MyClass c); 和 ostream& operator << (ostream &os , const &MyClass c);
ostream_iterator为输出流迭代器,也为类模板。为定义输出流迭代器,必须指定输出对象的类型。这个类的构造函数有两个参数:输出迭代器指向的ostream对象 和 表示输出对象之间分隔符的string值。因此可以像下面一样创建迭代器对象(即类模板实例化):
- ostream_iterator<int>(cout, "/n");——用于直接使用输出流迭代器
- ostream_iterator<int> out_Iterator (cout, "/n");——使用指针out_Iterator即可
istream_iterator为输入流迭代器。为定义输出流迭代器,必须指定输出对象的类型。这个类的构造函数只有一个参数:输入迭代器指向的istream对象。实例化输入流迭代器:
- istream_iterator<int>(cin);——直接使用
- istream_iterator<int> in_iterator(cin);——使用指针名
注意:输入迭代器参数为空时(参考:http://blog.csdn.net/fdl19881/article/details/6685744)
- 使用copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(ivec));将输入依次加入容器末尾,并以文件结束符或者非int类型值结束。
- 由以下程序可以看到,每次解引用输出迭代器之后,迭代器都会自动加1。
1 #include<iostream> 2 #include<iterator> 3 using namespace std; 4 5 void main() 6 { 7 ostream_iterator<int> out(cout, " "); 8 *out = 1; 9 *out = 2; 10 out; 11 }
C++零碎知识点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。