Como iterar std :: set com base no deslocamento de set.begin ()?
Preciso obter um iterador com base no deslocamento.
ou seja, ter o iterador para começar:
auto it = set.begin()
Preciso chegar ao iterador com deslocamento ofst:
it + ofst
Existe uma maneira de fazer isso? de Preciso aumentar incremental it++os ofsttempos do iterador .
Respostas
Preciso chegar ao iterador com deslocamento
ofst::it + ofstexiste uma maneira de fazer isso?
Não, não há operator+sobrecarga definida para isso para std::set::iterator(também conhecido como iteradores bidirecionais ). No entanto, você pode usar std::next, a partir
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
Basicamente, isso ofsttambém aumenta os tempos por trás da cena .
O std::settem iteradores bidirecionais , que não têm luxos como iteradores de acesso aleatório e, portanto, precisam ser incrementados dessa forma.
Dito isso, você pode sobrecarregar operator+(e talvez operator-) para os iteradores bidirecionais, o que não será recomendado .