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
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'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı