<p>In the STL library some containers have iterators and it is commonly held that they are a superior way of iterating through these containers rather than simple for loops e.g.</p>

<pre><code>for ( int i=0; i &lt; vecVector.size(); i++ )
{

..

}
</code></pre>

<p>Can anyone tell me why and in what cases I should use iterators and in what cases the code snippet above please?</p>

Using iterators allows your code to be agnostic about the implementation of your container.  If random access for your container is cheap, there isn't much difference performance-wise.
But in lots of cases you won't know whether that is the case.  If you try do use your method on a linked list, for example, with subscripting, the container is going to have to walk the list on every iteration to find your element.
So unless you know for sure that random access to your container is cheap, use an iterator.