問題はこれです:オブジェクトの束について真偽情報を保持するためにビットマップ(一連のバイナリフラグ)を作成する必要があります。オブジェクトの数は先験的には分かっていないので、ビットマップの作成中に実行時に十分なフラグを割り当てる必要があります。 max_num_elements
要素を考えるとバイナリフラグを保持するC++のビットマップ
、私の最初のアイデアは、((num_elements/8)+1)*sizeof(char)
ビットの配列を割り当てることだった:char
があれば、8進フラグを扱うことができる8ビットであるので、私はchar
秒のminimun数がnum_elements
フラグを保持するために取得するので、最大で7ビットのメモリの無駄。
本当の問題は、フラグを設定/確認するためのものです:私は、ビット単位に続く配列全体にいくつかのbitshiftingを行うには、フラグを取得するために取り払わNのような
flag_n = (flag_array>>n)&0d1
が、私は、正しくシフトを理解している場合操作は最初の要素だけで、配列全体には影響しません。
どうすればこの問題を解決できますか?
私は何かが欠けていない限り、なぜビットマップではなく長いですか?最初のビットは、あるプロパティについては真/偽を、もう一つのプロパティについては二番目のビットを保持します。 – Eugene