copy函数的前两个参数,一定是同一个对象的两个迭代器么?该如何处理

copy函数的前两个参数,一定是同一个对象的两个迭代器么?
C/C++ code

     stream_iterator<int>is(cin); 
     istream_iterator<int>intEOF; 
     vector<int>v; 
     copy(is,intEOF,back_inserter(v)); //这个copy很奇怪。
     copy(v.begin(),v.end(),ostream_iterator<int>(cout," ")); 



通常copy函数的前两个参数都来自于同一个对象,例如v.begin()和v.end(),例如上例的第二个copy函数

问题是:
第一个copy函数为什么要定义一个单独的intEOF对象,它和前面那个包装了cin对象的iterator,已经是两个不同的iterator了啊,难道不会出错吗?


------解决方案--------------------
都应该是istream_iterator
------解决方案--------------------
LZ可以编译一下试试 是出错的 第一个应该也是istream_iterator,用cin来初始化,表示连接到输入,第二个并没有初始化 表示的就是流结尾,两个迭代器表示了一个范围