1

一个空队列、一个空向量等占用多少字节?

4

3 回答 3

7

这是一个实现细节——标准并没有说太多。我们大概可以算出一个最小值:

Avector将(至少)具有指向数据本身的指针、实际大小和容量。所以至少是整数大小的 3 倍。显然,大小和指针可能是 64 位,在这种情况下,它是 3 乘以 64 位 = 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 个字节。链表也有两个指针。但是不同的实现可能需要更多或更少。例如,可以使用 24 位基地址和 8 位来存储大小,导致只使用 4 个字节来记账。

于 2013-02-20T23:48:11.633 回答