0

ファイルの書き込み/読み取りのために、タプルとベクターを使用して低レベル/バイナリ操作を行います。std::vector<bool> v(8)またはを実行する場合std::tuple<bool, bool, bool, bool, bool, bool...>、ブール値が連結されないという保証はありますか? (したがって、ベクトルとタプルは少なくとも n バイトの重みを持ちます (n はブール値の数です)。

4

2 に答える 2

1

std::vector<bool>ビットパックされているかどうかは実装によって定義されます。そのインターフェイスはbool値に直接アクセスする方法を提供しないため、基になる配列に直接アクセスしようとすると、ある時点で確実に焼けてしまいます。

std::tupleの一般化ですstd::pair。したがって、std::tuple<bool, bool, bool>と同等ですstruct SomeStruct { bool a, b, c; };。つまり、bool値はビットパックされません。

于 2012-10-03T13:16:29.217 に答える
-1

"Vector の特殊化: vector< bool > vector クラスのテンプレートには、bool 型に対する特別なテンプレートの特殊化があります。

この特殊化は、スペースの割り当てを最適化するために提供されています。このテンプレートの特殊化では、各要素が 1 ビットのみを占有します.."ここから引用.

于 2012-10-03T12:43:38.803 に答える