C ++ 11'de temelde bir boole vektörünün yerini alan bir bit maskeleri vektörünü nasıl oluşturabilirim?
Doğru / yanlış değerleri depolamak için bir bit maskeleri vektörü oluşturmaya çalışıyorum, bu bana başka bir vektördeki belirli indeks değerinin yazdırılması gerekip gerekmediğini söyleyecek.
örneğin: std::vector<int> a ;
b, a tam sayı vektörüne karşılık gelen bayrak değerlerini tutacak bir bit maskeleri vektörüdür ve bu bayrak, karşılık gelen indeksteki belirli bir değerin yazdırılması gerekip gerekmediğini söyler.
a {1,2,3}
b { true, false ,true} // I need a similar bitmask which would help me print 1 and 3
bu görev başka şekillerde de gerçekleştirilebilir, çalıştığım sorun bit maskesi kullanımını gerektirir. Bu konuda bana yardım ettiğiniz için şimdiden teşekkürler.
Yanıtlar
Pat.ANDRIA
Birçoğunun zaten önerdiği gibi, bunu şöyle yapardım:
myBitset
bayrakları koruyacak.1
(set) baskı bayrağı için ve0
(temizle) baskı dışı bayrak için
#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);
}
Çıktı şöyle olacaktır:
1101001000
47910
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'