title: How does std::copy work with stream iterators
body: <p>A usual STL construct is:</p>
  
  <pre><code>vector&lt;string&gt; col;
  copy(istream_iterator&lt;string&gt;(cin), istream_iterator&lt;string&gt;(),
      back_inserter(col));
  </code></pre>
  
  <p>where we use an <code>istream_iterator</code> to copy from std input (<code>cin</code>) to a vector.</p>
  
  <p>Can anyone explain how this code works?</p>
  
  <p>my problem is that I don't really understand this part:</p>
  
  <pre><code>istream_iterator&lt;string&gt;(cin), istream_iterator&lt;string&gt;()
  </code></pre>