C ++のビットマップ - unsigned intは仕事をしますか?
-
12-11-2019 - |
質問
私は認めているのが怖い、私は今ではC ++を使用していませんが、私は今までに持っていると思います、そして私は少し錆びました。
ビットマップを持っている必要があります。パフォーマンスについて気にしているため、ビットマップサイズはもう25ビットになります。
unsigned intを使うことを考えていましたが、C / C ++でどのように実装されているかを覚えていないと思います。
通常の2進数として実装されているunsigned intは?
私はビットマップの他の提案にも開かれています。
ヘルプのために事前にありがとう!
解決
ヘッダstd::bitset<25>
から<bitset>
を使用します。bitset
は[]
でインデックスを付けることができ、テンプレートであるため、すべての操作をインライン化されたすべての操作ではunsigned int
(または同等の)まで拡張します。
他のヒント
std :: bitset から<bitset>
ヘッダファイルから検討しましたか?
例:
#include <iostream>
#include <bitset>
int main() {
std::bitset<25> bits(146);
std::cout << bits << std::endl;
//using operator[] to access individual bit manually!
for(size_t i = 0 ; i < bits.size() ; ++i)
std::cout << bits[i] << " ";
return 0;
}
.
出力:
0000000000000000010010010
0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
.
注: bits[0]
は最下位ビットですが、bits[bits.size()-1]
は最上位ビットです!
オンラインデモ: http://ideone.com/3ssf0
代わりに
ビットマップには整数タイプを使用できるはずです。
しかしながら、標準図書館には<bitset>
があります。
所属していません StackOverflow