मैं मूल रूप से C ++ 11 में बूलियन के वेक्टर की जगह लेने वाले बिटकॉम्स का वेक्टर कैसे बनाऊं?

Jan 23 2021

मैं सच्चे / झूठे मूल्यों को संग्रहीत करने के लिए बिटकॉइन का एक वेक्टर बनाने की कोशिश कर रहा हूं जो मुझे बताने जा रहे हैं कि किसी अन्य वेक्टर में मूल्य विशेष सूचकांक को मुद्रित करने की आवश्यकता है या नहीं।

जैसे: 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 Jan 23 2021 at 18:11

जैसा कि पहले से ही कई सुझाव दिए गए हैं, मैंने ऐसा ही किया है:

  • 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