2013-02-20 80 views
1

空隊列,空向量等有多少個字節?空隊列需要多少個字節?

+6

取決於實施。 – 2013-02-20 23:41:43

+0

它的實現定義。 – 2013-02-20 23:41:55

+0

並取決於處理器架構。 – 2013-02-20 23:42:01

回答

6

這是一個實現細節 - 標準沒有多說這個。我們大概可以計算出一個最小值:

A vector將(至少)有一個指向數據本身的指針,一個實際的大小和一個容量。所以至少是整數大小的3倍。顯然,大小和指針可以是64位,在這種情況下,它是3次64位= 24字節。但是沒有看到實際的實現,沒有說是否大小是或者不是64位。

A queue可能類似。

你當然可以做sizeof(vector<int>)並親自看看。但不能保證在不同的架構上保持一致。

+0

請考慮,對於'std :: string'應該保持相同的推理:它當然具有數據本身,大小和容量。然而,在Windows的g ++ 4.7.2中,std :: string是4個字節,是單個指針的大小。由於它保存的指針非零,它使用的存儲實際上可能超過了最小值,但重點是對於空字符串,內部指針*可以是空指針,在這種情況下,實例只會使用空間一個單一的指針。 – 2013-02-21 02:14:26

0

這個問題沒有一般的答案。這完全取決於實施。

0

一般來說,常見的實現將基於數組或鏈表。在這種情況下,它需要一個指向隊列開始的指針和長度(或指向結尾的指針)。這反過來又意味着需要sizeof(void *)* 2個字節。在x86_64上,它將等於16個字節。鏈表也會有兩個指針。但不同的實現可能需要更多或更少。例如,可以使用24位基地址和8位來存儲大小,從而僅使用4個字節進行簿記。