title: Qt container (QVector, QList) ::end() return an iterator which cannot be referred
body: <h1>[Situation]</h1>
  <p>This happens on both <code>QVector</code> and <code>QList</code> and here I used the latter as an example.</p>
  <p><strong>Test code:</strong></p>
  <pre><code>QList&lt;int&gt; test;    
  for (int i=0; i&lt;10; i++)
      test.append(i);
  
  // First
  qDebug()&lt;&lt;&quot;[First]&quot;;
  qDebug()&lt;&lt;&quot;Directly return:&quot;&lt;&lt;test.first();
  QList&lt;int&gt;::iterator itr_first = test.begin();
  qDebug()&lt;&lt;&quot;By iterator:&quot;&lt;&lt;*itr_first;
  
  // Last
  qDebug()&lt;&lt;&quot;[Last]&quot;;
  qDebug()&lt;&lt;&quot;Directly return:&quot;&lt;&lt;test.last();
  QList&lt;int&gt;::iterator itr_last = test.end();
  qDebug()&lt;&lt;&quot;By iterator:&quot;&lt;&lt;*itr_last; //&lt;--- ***No value can be referred from here***
  
  itr_last = itr_last-1;
  qDebug()&lt;&lt;&quot;By iterator(modified):&quot;&lt;&lt;*itr_last;
  </code></pre>
  <p><strong>The output is:</strong></p>
  <blockquote>
  <p>[First]</p>
  <p>Directly return: 0</p>
  <p>By iterator: 0</p>
  <p>[Last]</p>
  <p>Directly return: 9</p>
  <p>By iterator: -842150451</p>
  <p>By iterator(modified): 9</p>
  </blockquote>
  <h1>[Question]</h1>
  <p>Unlike <code>QList::begin()</code> which returns the iterator of the first item, I don't understand why <code>QList::end()</code> return an unusable iterator which cannot be referred. This is very nettlesome to me and makes my program sometimes buggy.</p>
  <p>What's the reason for it? Does it have anything to do with C++ convetion?</p>