Bagaimana cara membuat vektor bitmask yang pada dasarnya menggantikan vektor boolean di C ++ 11?
Saya mencoba membuat vektor bitmask untuk menyimpan nilai benar / salah yang akan memberi tahu saya jika nilai indeks tertentu di vektor lain perlu dicetak atau tidak.
misal: std::vector<int> a ;
b adalah vektor bitmask yang akan menyimpan nilai flag yang sesuai dengan vektor integer a dan flag ini memberi tahu saya jika nilai tertentu pada indeks terkait perlu dicetak atau tidak.
a {1,2,3}
b { true, false ,true} // I need a similar bitmask which would help me print 1 and 3
tugas ini dapat dicapai dengan cara lain masalah yang saya kerjakan memerlukan penggunaan bitmask. Terima kasih sebelumnya telah membantu saya dengan ini.
Jawaban
Pat.ANDRIA
Seperti yang sudah disarankan banyak orang, saya akan melakukan ini seperti ini:
myBitset
akan menyimpan benderanya.1
(set) untuk bendera cetak dan0
(hapus) untuk bendera non-cetak
#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);
}
Ouputnya adalah:
1101001000
47910
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'