2

誰かがに格納されているデータのメモリ レイアウトを説明できますかvector<bool>?

メモリはアドレスから上に向かってどのようなレイアウトを持っています&myVec[0]か? エンディアンに依存しますか?格納されたすべての値のメモリは連続していますか? vector<bool>(実際にはブール値を保存しないことは承知しています)。vector<bool>memcopy を使用して aの内容をファイルにダンプして、値のビットマップを取得できますか?

「何のために必要なのですか」のような質問や、ビットセットやブーストの使用などの提案はしないでください。

的確な説明ありがとう

4

2 に答える 2

1

std::vector は、ヒープ上の生の配列を単純に管理します。したがって、 &myVec[0] を実行すると、この配列の最初の要素のアドレスが取得されます。それは配列なので、生の配列のルールに従います..

しかし

std::vector は特殊なケースであり、特定の実装であり、ビットのベクトルではboolなくコンテナーを管理する C++ 委員会の間違いです。したがって、これを使用することは避けてください。

于 2010-11-09T23:55:10.917 に答える
0

ベクトルは基本的に配列のラッパーであるため、メモリは連続しています。これは、memcpy を使用できることも意味します (それが必要な場合)。

各要素のエンディアンは、現在のアーキテクチャによって異なります。

vector<bool> myvector;
myvector.push_back(1);
myvector.push_back(0);
myvector.push_back(0);
myvector.push_back(1);
myvector.push_back(0);
myvector.push_back(1);
myvector.push_back(1);
myvector.push_back(0);

メモリでは次のように表示されます。

1 0 0 1 0 1 1 0

それがあなたの求めているものかどうかはわかりません。

于 2010-11-10T00:02:35.083 に答える