¿Cómo creo un vector de máscaras de bits que básicamente reemplaza un vector de booleano en C ++ 11?
Estoy tratando de crear un vector de máscaras de bits para almacenar valores verdaderos / falsos que me dirán si el índice particular del valor en otro vector debe imprimirse o no.
por ejemplo: std::vector<int> a ;
b es un vector de máscaras de bits que va a contener valores de bandera que corresponden al vector entero ay esta bandera me dice si ese valor particular en el índice correspondiente necesita ser impreso o no.
a {1,2,3}
b { true, false ,true} // I need a similar bitmask which would help me print 1 and 3
Esta tarea se puede lograr de otras formas. El problema en el que estoy trabajando requiere el uso de una máscara de bits. Gracias de antemano por ayudarme con esto.
Respuestas
Pat.ANDRIA
Como muchos ya sugirieron, habría hecho esto así:
myBitset
mantendrá las banderas.1
(establecer) para el indicador de impresión y0
(borrar) para el indicador de no impresión
#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);
}
La salida sería:
1101001000
47910