空队列,空载体等占用多少字节?
答案 0 :(得分:6)
这是一个实现细节 - 标准没有说太多。我们可能想出一个最低限度:
vector
将(至少)指向数据本身的指针,实际大小和容量。所以至少是整数大小的3倍。显然,大小和指针可能是64位,在这种情况下,它是3位64位= 24字节。但是,如果不考虑实际的实现,大小是否是64位是没有说法的。
queue
可能类似。
你当然可以做sizeof(vector<int>)
并亲眼看看。但是不能保证在不同的架构上是一样的。
答案 1 :(得分:0)
这个问题没有一般答案。这完全取决于实施。
答案 2 :(得分:0)
一般来说,常见的实现方式是基于数组或链表。在这种情况下,它需要一个指向队列开头和长度(或指向结尾的指针)的指针。这反过来意味着它需要sizeof(void *)* 2个字节。在x86_64上,它将等于16个字节。链表也有两个指针。但是不同的实现可能需要更多或更少。例如,可以使用24位基址和8位来存储大小,导致只使用4个字节进行簿记。