一个空队列占用多少字节

How many bytes does an empty queue take?

本文关键字:多少 字节 队列 一个      更新时间:2023-10-16

一个空队列、一个空向量等需要多少字节?

这是一个实现细节-标准对此没有太多说明。我们可能会计算出一个最小值:

vector将(至少)具有指向数据本身的指针、实际大小和容量。所以至少是一个整数大小的3倍。显然,大小和指针可以是64位,在这种情况下,它是64位=24字节的3倍。但是,如果不考虑实际实现,就无法确定大小是否为64位。

queue可能类似。

你当然可以做sizeof(vector<int>),自己看看。但不能保证在不同的体系结构上是相同的。

这个问题没有一般的答案。这完全取决于执行情况。

一般来说,一个常见的实现将基于数组或链表。在这种情况下,它需要一个指向队列开头和长度的指针(或指向末尾的指针)。这反过来意味着它需要sizeof(void*)*2个字节。在x86_64上,它将等于16个字节。链表也会有两个指针。但不同的实现可能需要更多或更少的时间。例如,可以使用24位基址和8位来存储大小,从而只使用4个字节进行记账。