copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?该如何解决

copy函数里面为什么可以用Ctrl+Z可以停止cin的输入?
下面这几行程序的作用是,当我输入若干个数字以后,按下Ctrl+Z然后连续两次回车,cin就被中止了, cout输出全部内容。 
C/C++ code

stream_iterator<int>is(cin); 
     istream_iterator<int>intEOF; 
     vector<int>v; 
     copy(is,intEOF,back_inserter(v)); 
     copy(v.begin(),v.end(),ostream_iterator<int>(cout," ")); 



发现,如果Ctrl+Z以后,不按回车再继续输入数字,效果是,按下一次回车前输入的数字被忽略,但是cin继续执行。 

我的问题是
(1)为什么是Ctrl+Z而不是Ctrl+C, Ctrl+C我发现程序就退出了。Ctrl+Z有什么特殊的含义么? 
(2)为什么copy(is,intEOF,back_inserter(v));当中,v的操作是用back_inserter,而不能用v.back()?

------解决方案--------------------
ctrl+z 是结束输入,cin会读到一个文件结束符EOF
------解决方案--------------------
vector::back()返回的不是迭代器,而是最后一个元素的引用。