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 ofst
tempi dell'iteratore .
Risposte
Devo arrivare all'iteratore con offset
ofst
::it + ofst
c'è 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 ofst
anche i tempi.
L' std::set
ha 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 .