我有一個vector<set<char> >
數據結構(事務數據庫),我想知道它的大小。當我使用sizeof()與每個set<char>
大小爲24時,儘管該集合包含3,4或5個字符。後來,當我使用sizeof()與vector<set<char> >
時,大小爲12 ...我想這不是知道數據結構大小的方法。任何幫助? 謝謝。sizeof()一個向量
回答
你想要vector::size()
和set::size()
。
假設v
是你的載體,這樣做:
size_t size = 0;
for (vector<set<char> >::const_iterator cit = v.begin(); cit != v.end(); ++cit) {
size += cit->size();
}
sizeof()
是給你在內存中的大小的對象/鍵入它被施加到,在sizeof(char)
(通常一個字節)的倍數。如果你想知道的內存大小的容器和它的元素,你可以這樣做:
sizeof(v) + sizeof(T) * v.capacity(); // where T is the element type
如果他已經保留了它的向量呢? – 2010-03-03 17:12:23
@John:如果他*有*,該怎麼辦? 'reserve()'與* size()沒有任何關係。 – 2010-03-03 17:17:45
我認爲約翰意味着如果你想知道矢量(和內容)佔據多少內存,你應該看看容量,而不是大小。 「容器及其元素的內存大小」當然是不明確的,但我懷疑它更可能被理解爲與矢量分配的內存量有關,而不是當前被元素佔用的內存量。 – 2010-03-03 18:35:00
sizeof()
在編譯時計算,所以沒有辦法它可以告訴你有多少元素它有內部。
使用矢量對象的size()
方法。
sizeof
返回對象本身的大小。如果它包含指針陣列例如它不會計數陣列的大小,它將計數(在32位4)載體使用指針的唯一尺寸.size
使用vector::size()
成員函數找出項目數的矢量。提示 - 他們被分配到免費商店。
向量使用內部指針來實現實際存儲。因此,sizeof()將始終返回不包含數據存儲本身的相同結果。請嘗試使用vector::size()
方法。這將返回矢量中元素的數量。
在STL vector
是類模板,當你給模板參數內<SomeType>
以下矢量,C++編譯器產生的代碼爲一個類類型SOMETYPE的。因此,當您使用push_back
填充矢量時,實際上是插入另一個對象SomeType
,因此當您從編譯器請求.size()
時,它會提供您插入的SomeType
對象的數量。
希望有幫助!
那麼這是一個圍繞穀倉的答案......誰說他正在使用'push_back'以及它是如何相關的? vector與模板有關的事實如何?但至少你得到了'size()'是OP正在尋找的點。 – 2010-03-03 17:16:50
@STingRaySC 我試圖向OP解釋sizeof與他/她想要的無關。他(/她)應該在尋找的是.size()方法。 – 2010-03-03 18:04:17
- 1. sizeof和.size()之間的區別爲一個向量C++
- 2. 向量指向另一個向量
- 3. 如何找到'sizeof'(一個指向數組的指針)?
- 4. 將元素從一個向量移動到另一個向量
- 5. C++用另一個向量擴展一個向量
- 6. sizeof一個靜態數組在C中
- 7. SizeOf作爲一個字段的數組?
- 8. Ç的sizeof一個傳遞的數組
- 9. sizeof一個結構體成員
- 10. 構建一個向量樹
- 11. 複製一個子向量
- 12. 乘以一個向量
- 13. Collections.syncronizedList是一個向量嗎?
- 14. 向矢量添加一個
- 15. data.table減去一個向量
- 16. Numpy:乘以一個向量
- 17. 向另一個向量廣播特定向量元素
- 18. 創建一個向量指向更多的向量
- 19. 向量中的結構,一個向量包含8000個成員
- 20. 向量的每個元素添加到另一個向量
- 21. 如何守點的兩個向量中的一個向量
- 22. 創建一個新的向量基於另一個向量唯一值
- 23. 快速檢查一個向量是否是另一個向量的一部分
- 24. 將張量與keras中的向量合併爲一個向量
- 25. sizeof vs sizeof()在標準C?
- 26. 的sizeof(長)比的sizeof(* LP)
- 27. 分配矢量另一個向量
- 28. 向一個向量添加一個新創建的對象
- 29. 如何檢查一個向量是否是另一個向量的子集?
- 30. 使用另一個向量遍歷一個向量的特定元素
sizeof()是一個編譯時操作符 – 2010-03-03 16:54:16