Come iterare std :: set in base all'offset da set.begin ()?
Ho bisogno di un iteratore basato sull'offset.
cioè avere l'iteratore per inizio:
auto it = set.begin()
Devo arrivare all'iteratore con offset ofst:
it + ofst
C'è un modo per farlo? di ho bisogno di aumentare incrementalmente it++i ofsttempi dell'iteratore .
Risposte
Devo arrivare all'iteratore con offset
ofst::it + ofstc'è un modo per farlo?
No, non è stato operator+definito alcun sovraccarico per questo std::set::iterator(aka iteratori bidirezionali ). Tuttavia, puoi utilizzare std::next, dall'intestazione
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
Questo fondamentalmente dietro le quinte aumenta ofstanche i tempi.
L' std::setha iteratori bidirezionali , che non ha lussi come iteratori ad accesso casuale , e quindi necessario incremento simili.
Detto questo, potresti sovraccaricare operator+(e forse operator-) per gli iteratori bidirezionali, che però non saranno consigliati .