मैं मूल रूप से C ++ 11 में बूलियन के वेक्टर की जगह लेने वाले बिटकॉम्स का वेक्टर कैसे बनाऊं?
मैं सच्चे / झूठे मूल्यों को संग्रहीत करने के लिए बिटकॉइन का एक वेक्टर बनाने की कोशिश कर रहा हूं जो मुझे बताने जा रहे हैं कि किसी अन्य वेक्टर में मूल्य विशेष सूचकांक को मुद्रित करने की आवश्यकता है या नहीं।
जैसे: std::vector<int> a ;
बी बिटकॉम्स का एक सदिश है जो ध्वज मानों को धारण करने वाला है जो पूर्णांक वेक्टर के अनुरूप है और यह ध्वज मुझे बताता है कि संबंधित सूचकांक पर उस विशेष मूल्य को मुद्रित करने की आवश्यकता है या नहीं।
a {1,2,3}
b { true, false ,true} // I need a similar bitmask which would help me print 1 and 3
इस कार्य को उन अन्य तरीकों से प्राप्त किया जा सकता है जो समस्या मैं काम कर रहा हूं जिसमें बिटमास्क के उपयोग की आवश्यकता होती है। इसके साथ मेरी मदद करने के लिए अग्रिम धन्यवाद।
जवाब
Pat.ANDRIA
जैसा कि पहले से ही कई सुझाव दिए गए हैं, मैंने ऐसा ही किया है:
myBitset
झंडे रखेंगे।1
(सेट) प्रिंट फ्लैग के लिए और0
(स्पष्ट) नॉन-प्रिंट फ्लैग के लिए
#include <bitset>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv){
std::vector<int> a {1,2,3,4,5,6,7,8,9,10};
std::bitset<10> myBitset;
myBitset.set(3); // set fourth bit ==> display 4
myBitset.set(6); // set seventh bit ==> display 7
myBitset[8] = true; // set nineth bit ==> display 9
myBitset[9] = myBitset[3]; // set 10th bit ==> display 10
std::cout << "Mybitset" << myBitset << endl;
for (int i=0; i<a.size(); i++)
{
if (myBitset.test(i))
{
std::cout << a.at(i);
}
}
return (0);
}
निम्न होगा:
1101001000
47910