5

おそらくご存知のとおり、C ++ 98vector<bool>スペシャライゼーションは、ブール値をブール変数ではなくビットとして格納します。vector<bool>C ++にはビットへのポインタと参照がないため、の要素はアドレス指定できません。これに対する回避策はありますか、明らかな落とし穴(私は気づいていないようです)があり、そうしようとしても実用的ですか?

4

2 に答える 2

2

vector<bool>の要素は、他vectorの要素と同じようにアドレス指定できます(例:operator []。ただし、メモリ圧縮のため、操作は遅くなります。

おそらく、より高速な実装では、独自のメモリ内実装を使用し、バイナリシフトを使用して特定のブール値に対処します。

また、これが適切な場所で単純な配列を使用することもできます。new演算子を使用して動的に割り当てることができることを忘れないでください。

編集代替の実装は、たとえばこのスレッドで見つかる可能性があります。

于 2012-12-30T14:21:27.647 に答える
1

ビットへの参照/ポインターの代わりに、vector<bool>ブール値への参照/ポインターのように(ほとんどの場合)動作するオーバーロードされた演算子を持つラッパーオブジェクトを使用します。

于 2012-12-30T15:37:52.863 に答える