2010-07-17 6 views
1

En C++ 4e édition primaire par Lippman, opérateurs d'affectation composés pour iterator pour le vecteur et deque sont donnés:opérateur d'affectation composé iterator

iter1 += iter2 
iter1 -= iter2 

versions composé d'incessibilité d'addition iterator et soustraction. Affecte la valeur de l'ajout ou de la soustraction de iter1 et iter2 dans iter1. Mais quand je veux les utiliser, cela donne une erreur. De plus, que signifie de toute façon fournir des opérateurs d'affectation composés pour les itérateurs?

+0

Êtes-vous sûr que 'iter2' est un itérateur, pas un nombre? – kennytm

+0

Tout à fait, KennyTM. Je peux comprendre l'ajout d'un nombre à un itérateur, pour pointer quelques endroits plus loin, mais ajouter un itérateur à un autre itérateur semble dénué de sens. Vous n'ajouteriez pas deux pointeurs ensemble et espéreriez obtenir quelque chose qui en vaille la peine, après tout. –

+0

@ KennyTM..Le livre le dit. Je pense aussi que iter2 devrait être un nombre. –

Répondre

3

J'ai regardé ça dans Lippman. Pour moi, cela ressemble à une erreur. itérateurs d'accès aléatoire (le genre de iterator fourni par le vecteur et deque) affectation composée d'offre de la forme

iter += n 
iter -= n 

Voir par exemple

L'affectation composée de la forme écrite par Lippman n'a pas de sens lorsque vous regardez les types qui en résultent.