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