Pętla iteratora vs pętla indeksu [duplikat]

Możliwy duplikat:
Po co używać iteratorów zamiast indeksów tablicowych?

Przeglądam swoją wiedzę na temat C ++ i natknąłem się na iteratory. Jedną rzeczą, którą chcę wiedzieć, jest to, co czyni je tak wyjątkowymi i chcę wiedzieć, dlaczego to:

using namespace std;

vector<int> myIntVector;
vector<int>::iterator myIntVectorIterator;

// Add some elements to myIntVector
myIntVector.push_back(1);
myIntVector.push_back(4);
myIntVector.push_back(8);

for(myIntVectorIterator = myIntVector.begin(); 
        myIntVectorIterator != myIntVector.end();
        myIntVectorIterator++)
{
    cout<<*myIntVectorIterator<<" ";
    //Should output 1 4 8
}

jest lepszy niż to:

using namespace std;

vector<int> myIntVector;
// Add some elements to myIntVector
myIntVector.push_back(1);
myIntVector.push_back(4);
myIntVector.push_back(8);

for(int y=0; y<myIntVector.size(); y++)
{
    cout<<myIntVector[y]<<" ";
    //Should output 1 4 8
}

I tak, wiem, że nie powinienem używać przestrzeni nazw std. Właśnie wziąłem ten przykład ze strony cprogramming. Czy możesz mi powiedzieć, dlaczego ten ostatni jest gorszy? Jaka jest duża różnica?

questionAnswers(8)

yourAnswerToTheQuestion