web-dev-qa-db-fra.com

Vecteurs STL C ++: Obtenir un itérateur de l'index?

Ainsi, j’ai écrit un tas de code qui accède aux éléments d’un vecteur stl par index [], mais je n’ai maintenant plus qu’à copier un morceau du vecteur. On dirait que vector.insert(pos, first, last) est la fonction que je veux ... sauf que je n'ai que le premier et le dernier en tant qu'ints. Existe-t-il un moyen agréable d'obtenir un itérateur de ces valeurs?

189
mpen

Essaye ça:

vector<Type>::iterator nth = v.begin() + index;
269
dirkgently

manière mentionnée par @dirkgently ( v.begin() + index ) Nice et rapide pour les vecteurs

mais std::advance( v.begin(), index ) de la manière la plus générique et pour les itérateurs à accès aléatoire, le temps est constant.

[~ # ~] éditer [~ # ~]
différences d'utilisation:

std::vector<>::iterator it = ( v.begin() + index );

ou

std::vector<>::iterator it = v.begin();
std::advance( it, index );

ajouté après @litb notes.

82
bayda

Aussi; auto it = std::next(v.begin(), index);

Mise à jour: nécessite un compilateur conforme à C++ 11x

45
Viktor Sehr

Ou vous pouvez utiliser std::advance

vector<int>::iterator i = L.begin();
advance(i, 2);
8
TimW