Tengo una boost dynamic_bitset que yo estoy tratando de extraer los bits fijados a partir de:iteración a través de un impulso :: dynamic_bitset
boost::dynamic_bitset<unsigned long> myBitset(1000);
Mi primera idea era hacer un simple 'volcar' bucle a través de cada índice y preguntar si que se estableció:
for(size_t index = 0 ; index < 1000 ; ++index)
{
if(myBitset.test(index))
{
/* do something */
}
}
Pero entonces vi dos métodos interesantes, find_first()
y find_next()
que pensé con certeza estaban destinados para este fin:
size_t index = myBitset.find_first();
while(index != boost::dynamic_bitset::npos)
{
/* do something */
index = myBitset.find_next(index);
}
Realicé algunas pruebas y parece que el segundo método es más eficiente, pero esto me preocupa que podría haber otra forma "más correcta" de realizar esta iteración. No pude encontrar ningún ejemplo o nota en la documentación que indique la forma correcta de iterar sobre los bits establecidos.
Entonces, ¿está utilizando find_first()
y find_next()
la mejor manera de iterar sobre dynamic_bitset
, o hay otra manera?
@Iarsmans: Gracias. Sin un ejemplo al respecto, pensé que tal vez había una manera aún mejor, pero con su explicación no podemos esperar mucho mejor que eso. – JaredC