2
#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;
}

当我向程序输入1 2 3 c(最后一个元素'c'是使cin状态为EOF)时,最终vin2将包含元素:2 3;但是,当我注释变量的声明时in_iter,相同的输入将vin2包含元素:1 2 3;如何变量的声明in_iter对这个程序有影响吗?谢谢!

4

1 回答 1

6

istream_iteratoran到 an的绑定istream会导致从 中读取一个值istream,并将其存储在迭代器中。这是必要的,以便取消引用迭代器可以给出一个值。因此,如果将 2 绑定istream_iterators到相同的istream,将读取 2 个值。

将 2 个活动的 istream 迭代器绑定到同一个 istream 很少有用。

作为一个稍微有趣的实验,看看如果你同时创建in_iterin_iter2,都绑定到,并用(或首先创建的任何一个)cin初始化你的向量,会发生什么。in_iter

于 2013-12-11T03:37:46.830 回答