0

次のような構造体があるとします。

struct vertexNodeInfo
{
    unsigned char level;
    int node;
    double leaf;
};

もし私がこれを持っていたら:

vector<vertexNodeInfo> node;

.sizeの前に、空のベクトルはどのくらいの大きさになりますか (メモリに関して、 ではありません) push_back。とまったく同じサイズ(メモリの観点から)vector<int> node;ですか?

4

2 に答える 2

1

Luchian が言うように、そうである可能性は高いですが、必須ではありませんsizeof(vector<int>) == sizeof(vector<vertexNodeInfo>)

capacityさらに、デフォルトで初期化されたベクトルに関して、標準が要件を課しているとは思いません。

C++ での vector の初期容量

したがって、10 の容量を持つことが許可されています。つまり、前もって 10 要素に十分なメモリが割り当てられています。その場合、この割り当てのサイズはもちろん要素のサイズに依存します。「どのくらい大きく、メモリ的に」という意味を正確に定義しているわけではありませんが、動的割り当てを含める場合は、これが 1 つになります。

それは の非常に良い実装になるとは思いませんがvector、標準に準拠しています。

于 2013-11-02T10:47:20.837 に答える
1

要件はありません。さらに、それは定式化が不十分な質問です。

要素がないため.size、ベクトルのは になります。0

sizeof要素数に影響されず、通常は型への 1 つまたは 2 つのポインター (サイズ自体が異なる可能性があるため、sizeof(vector<vertexNodeInfo>)sizeof(vector<int>)が等しいという保証はありません)、サイズ、および容量を格納するのに十分な大きさです。

于 2013-11-02T08:43:48.573 に答える