skf*_*eng 2 c++ istream-iterator
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>
using namespace std;
int main()
{
istream_iterator<int> in_iter(cin);
istream_iterator<int> eof;
vector<int> vin;
/*while (in_iter!=eof)
{
vin.push_back(*in_iter++);
}*/
istream_iterator<int> in_iter2(cin), eof2;
vector<int> vin2(in_iter2,eof2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我输入1 2 3 c(最后一个元素'c'使cin状态为EOF)到程序时,最后,vin2将包含元素:2 3;但是,当我注释变量的声明时in_iter,相同的输入将vin2包含元素:1 2 3; How变量声明in_iter是否对此程序有效?谢谢!
的结合istream_iterator到一个istream原因之一值被从读取istream,并存储在迭代器.这是必要的,以便取消迭代迭代器可以给出一个值.因此,如果将2绑定istream_iterators到同一个istream,则将读取2个值.
将2个活动的istream迭代器绑定到同一个istream是很有用的.
作为一个有趣的实验,看看如果你创建了两个,in_iter并且in_iter2都绑定到cin并初始化你的矢量in_iter(或者首先创建的那个)会发生什么.