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?
Essaye ça:
vector<Type>::iterator nth = v.begin() + index;
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.
Aussi; auto it = std::next(v.begin(), index);
Mise à jour: nécessite un compilateur conforme à C++ 11x
Ou vous pouvez utiliser std::advance
vector<int>::iterator i = L.begin();
advance(i, 2);