0
我想弄清楚使用迭代器訪問矢量中位置的最佳方式。我知道迭代器的行爲像指針,所以這是我想出的唯一方法。我想知道是否有更好的或不同的方式。下面的代碼:使用迭代器訪問矢量的特定點
//This is a pointer to a vector of the class Particle BTW. vector <Particle> *particleList;
vector<Particle>::iterator it = particleList->begin();
// I assign a specific position outside the loop to a new iterator that won't be affected
vector<Particle>::iterator it2 = particleList->begin() + 3;
for(it; it != particleList->end(); it++){
it->draw();
//I'm interested in the velocity of this element in particular
cout << it2->vel << endl;
}
感謝,
中號
它不是唯一的方法。諸如['std :: advance'](http://en.cppreference.com/w/cpp/iterator/advance),['std :: next'](http://en.cppreference.com/w)/cpp/iterator/next)和['std :: prev'](http://en.cppreference.com/w/cpp/iterator/prev)是爲了這個特定的目的。 – WhozCraig
感謝克雷格,這真棒! – mauricioSanchez
他們還有一個額外的好處,就是用迭代器根據類型「ate :: advance」做正確的事情,需要一個雙向迭代器或更高版本。對於一個隨機訪問迭代器來說,它會在常量時間內跳轉,而雙向將在O(N)時間內跳轉,並且它只對給定的迭代器類型做正確的事情。養成使用它們的習慣(至少大於1)。 – WhozCraig