Puis-je faire arithmétique pointeur sur un STL :: vector :: itérateur
Actuellement, je utiliser un itérateur à la recherche par le biais d'un vecteur et de tester ses éléments. - Je accéder aux éléments à l'aide de
std::vector<int>::iterator it;
if (*it == 0);
Puis-je utiliser la même arithmétique des pointeurs de style logique de tester également l'élément suivant (sans modifier mon itérateur)?
Je dois d'abord voir si elle va pousser l'itérateur en dehors des limites
if (it != myvec.end())
Puis tester à la fois actuel de l'élément et l'élément suivant
if (*it == 1 && *(it + 1) == 1)
Ce travail que j'attends de l'aide de pointeurs?
source d'informationauteur Dom
Vous devez vous connecter pour publier un commentaire.
Oui, les itérateurs pour
std::vector
sont les itérateurs à accès aléatoire vous devez ajouter/soustraire des valeurs entières pour obtenir d'autres itérateurs.Techniquement, il ne peut pas être de l'arithmétique des pointeurs, mais ils agissent comme des pointeurs.
Cela fonctionne en effet comme vecteur d'itérateur sont itérateur à accès aléatoire. Ce n'est pas seulement pouvez-vous agir sur eux comme vous le feriez avec des pointeurs, mais ils sont assez bien mis en œuvre à l'aide de pointeurs /l'arithmétique des pointeurs.
Bien, si itérateur sur le dernier élément du conteneur puis
a un comportement indéfini.
Vous devez vérifier que
avant d'être déréférencé.