मैं एक boost dynamic_bitset है कि मैं से सेट बिट्स निकालने के लिए कोशिश कर रहा हूँ है:एक बढ़ावा के माध्यम से बार-बार दोहराना :: dynamic_bitset
boost::dynamic_bitset<unsigned long> myBitset(1000);
मेरी पहली सोचा एक सरल प्रत्येक सूचकांक के माध्यम से लूप 'डंप' और अगर पूछना करने के लिए था यह स्थापित किया गया था:
for(size_t index = 0 ; index < 1000 ; ++index)
{
if(myBitset.test(index))
{
/* do something */
}
}
लेकिन फिर मैंने देखा कि दो दिलचस्प तरीकों, find_first()
और find_next()
कि मुझे यकीन है कि के लिए सोचा था कि इस उद्देश्य के लिए बने थे:
size_t index = myBitset.find_first();
while(index != boost::dynamic_bitset::npos)
{
/* do something */
index = myBitset.find_next(index);
}
मैंने कुछ परीक्षण चलाए और ऐसा लगता है कि दूसरी विधि अधिक कुशल है, लेकिन इससे मुझे चिंता है कि इस पुनरावृत्ति को करने के लिए एक और 'सही' तरीका हो सकता है। मैं दस्तावेज़ बिट्स में पुनरावृत्त करने के सही तरीके को इंगित करने वाले दस्तावेज में कोई उदाहरण या नोट नहीं ढूंढ पाया।
तो, find_first()
और find_next()
का उपयोग dynamic_bitset
पर फिर से शुरू करने का सबसे अच्छा तरीका है, या कोई और तरीका है?
@ इर्समैन: धन्यवाद। इसके बारे में एक उदाहरण के बिना, मैंने सोचा कि शायद एक बेहतर तरीका भी था, लेकिन आपकी व्याख्या के साथ हम वास्तव में उससे बेहतर उम्मीद नहीं कर सकते हैं। – JaredC