1

空のキューや空のベクトルなどは何バイトかかりますか?

4

3 に答える 3

7

これは実装の詳細です。標準ではそれについてあまり言及されていません。おそらく最小値を把握できます。

Avectorには、(少なくとも) データ自体へのポインター、実際のサイズと容量があります。したがって、整数のサイズの少なくとも 3 倍です。明らかに、サイズとポインターは 64 ビットである可能性があり、その場合、64 ビットの 3 倍 = 24 バイトになります。しかし、実際の実装を見ない限り、サイズが 64 ビットかどうかはわかりません。

Aqueueも似たようなものでしょう。

もちろんsizeof(vector<int>)、自分の目で確かめることもできます。ただし、異なるアーキテクチャで同じであるとは限りません。

于 2013-02-20T23:42:52.250 に答える
0

この質問に対する一般的な答えはありません。これは実装に完全に依存します。

于 2013-02-20T23:42:12.083 に答える
0

一般的に言えば、一般的な実装は配列または連結リストに基づいています。その場合、キューの先頭へのポインターと長さ (または末尾へのポインター) が必要になります。これは、 sizeof(void*)*2 バイトかかることを意味します。x86_64 では、16 バイトに相当します。リンクされたリストにも 2 つのポインターがあります。しかし、異なる実装では多かれ少なかれかかる場合があります。たとえば、24 ビットのベース アドレスと 8 ビットを使用してサイズを格納すると、ブックキーピングに 4 バイトしか使用できなくなります。

于 2013-02-20T23:48:11.633 に答える