¿Cómo iterar std :: set basado en el desplazamiento de set.begin ()?
Necesito obtener un iterador basado en el desplazamiento.
es decir, tener el iterador para comenzar:
auto it = set.begin()
Necesito llegar al iterador que tiene compensación ofst
:
it + ofst
¿Hay una manera de hacerlo? de Necesito incrementar incrementalmente it++
los ofst
tiempos del iterador .
Respuestas
Necesito llegar al iterador haber compensado
ofst
:it + ofst
: ¿hay una manera de hacer eso?
No, no hay una operator+
sobrecarga definida para esto std::set::iterator
(también conocidos como iteradores bidireccionales ). Sin embargo, puede usar std::next, desde el
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
Esto básicamente detrás de escena también incrementa los ofst
tiempos.
El std::set
tiene iteradores bidireccionales , que no tiene lujos como iteradores de acceso aleatorio , y por lo tanto necesita de la subasta como esta.
Dicho esto, podría sobrecargar operator+
(y tal vez operator-
) los iteradores bidireccionales, lo que no se recomendará .