Ho un boost dynamic_bitset che sto cercando di estrarre i bit impostati da:scorrendo un boost :: dynamic_bitset
boost::dynamic_bitset<unsigned long> myBitset(1000);
Il mio primo pensiero è stato quello di fare un semplice 'discarica' loop attraverso ogni indice e chiedere se è stato impostato:
for(size_t index = 0 ; index < 1000 ; ++index)
{
if(myBitset.test(index))
{
/* do something */
}
}
ma poi ho visto due metodi interessanti, find_first()
e find_next()
che ho pensato di sicuro sono stati pensati per questo scopo:
size_t index = myBitset.find_first();
while(index != boost::dynamic_bitset::npos)
{
/* do something */
index = myBitset.find_next(index);
}
Ho eseguito alcuni test e sembra che il secondo metodo sia più efficiente, ma questo mi preoccupa che potrebbe esserci un altro modo "più corretto" per eseguire questa iterazione. Non ero in grado di trovare alcun esempio o note nella documentazione che indica il modo corretto di scorrere i bit impostati.
Quindi, sta usando find_first()
e find_next()
il modo migliore per scorrere su un dynamic_bitset
, o c'è un altro modo?
@Iarsmans: Grazie. Senza un esempio, ho pensato che forse c'era un modo ancora migliore, ma con la tua spiegazione non possiamo davvero aspettarci molto meglio di così. – JaredC