Comment parcourir std :: set en fonction de l'offset de set.begin ()?
J'ai besoin d'un itérateur basé sur le décalage.
c'est-à-dire avoir l'itérateur pour begin:
auto it = set.begin()
Je dois accéder à l'itérateur ayant offset ofst
:
it + ofst
Y-a-t-il un moyen de faire ça? de J'ai besoin d'augmenter progressivement it++
les ofst
temps d' itérateur .
Réponses
Je dois accéder à l'itérateur ayant offset
ofst
::it + ofst
y a-t-il un moyen de le faire?
Non, il n'y a pas de operator+
surcharge définie pour cela pour std::set::iterator
(aka itérateurs bidirectionnels ). Cependant, vous pouvez utiliser std::next, à partir de l'en-
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
Ceci fondamentalement derrière la scène incrémente les ofst
temps aussi.
Le std::set
a des itérateurs bidirectionnels , qui n'ont pas de luxe comme les itérateurs à accès aléatoire , et doivent donc s'incrémenter comme ça.
Cela étant dit, vous pourriez surcharger le operator+
(et peut-être operator-
) pour les itérateurs bidirectionnels, ce qui ne sera cependant pas recommandé .