0
class A {};
class B {};
Both the classes are properly defined.
struct MyStruct{
typedef std::vector< std::pair< const A*, const B* > > TVec;
std::map< std::string, TVec > d_data;
};
私は2次元配列の各要素が構造体MyStruct型である10X10の2次元配列を持っています。同じ数のオブジェクトのメモリフットプリント
ここでは、この2D配列に追加する要素が100個あります。 各要素が配列の一意の位置に挿入されている場合、その場合、私のメモリフットプリントは「X」MBと言います。 各2D配列要素に格納されているMyStruct要素は1つだけです。
しかし、最後の位置、つまり2DArr [9] [9]に100種類のMyStruct要素をすべて追加すると、私のメモリフットプリントは「Y」MBと言います。
地図サイズが1であると仮定すると、すなわち、キーが1つしかなく、そのキーに対応する場合、複数の値がベクトルに格納されます。
「Y」は「X」の4倍近くにあります。 なぜそれが最後であるのか、同じ数の要素、つまり2D配列の100個のMyStruct要素を異なる場所に挿入していますどちらの場合も
最後の段落は正しいとは思いません。特に、 '少し遅れて、バックグラウンドスレッドの空き未使用アイテム '。これはjavaではありません。各オブジェクトは非常に特定の寿命を持っています。あなたは ''遅れて ''デストラクタ 'を呼び出すことはできません。 – bolov
ベクタのどの項目が「未使用」であるかをインプリメンテーションがどのように認識しますか? –
bolov:アイテムに割り当てられ、デストラクタを呼び出すメモリは2つの異なるものです。 Cody:.size()と.capacity()は異なります。 – lorro