Bagaimana cara membuat vektor bitmask yang pada dasarnya menggantikan vektor boolean di C ++ 11?
Jan 23 2021
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 Jan 23 2021 at 18:11
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
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'