Wie erstelle ich einen Bitmaskenvektor, der in C ++ 11 im Grunde einen Booleschen Vektor ersetzt?
Ich versuche, einen Bitmaskenvektor zu erstellen, um wahre / falsche Werte zu speichern, die mir sagen, ob der bestimmte Index in einem anderen Vektor gedruckt werden muss oder nicht.
Beispiel: std::vector<int> a ;
b ist ein Vektor von Bitmasken, der Flag-Werte enthält, die dem ganzzahligen Vektor a entsprechen, und dieses Flag sagt mir, ob dieser bestimmte Wert am entsprechenden Index gedruckt werden muss oder nicht.
a {1,2,3}
b { true, false ,true} // I need a similar bitmask which would help me print 1 and 3
Diese Aufgabe kann auf andere Weise gelöst werden. Für das Problem, an dem ich arbeite, ist die Verwendung einer Bitmaske erforderlich. Vielen Dank im Voraus, dass Sie mir dabei geholfen haben.
Antworten
Pat.ANDRIA
Wie viele bereits angedeutet haben, hätte ich das so gemacht:
myBitset
wird die Flaggen behalten.1
(gesetzt) für Druckflag und0
(löschen) für Nichtdruckflag
#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);
}
Die Ausgabe wäre:
1101001000
47910