回答
典型行爲:在內部,std::vector
具有長度capacity
的連續陣列。在任何給定的點上,實際上只使用size
元素。如果在任何時候size
會超過capacity
(假設你叫push_back()
很多),一個新的,更大的內部數組被分配(capacity
可能翻倍)。然後將舊數組中的所有元素都複製到新數組中,並刪除舊元素和數組。
太棒了!感謝大家! – Russel 2010-11-21 23:07:08
細節與實現有關,但由矢量分配的內存塊保證連續。
GCC在重新分配內存時使用2.0係數,MSVC使用1.5係數。
前段時間有人討論了關於最佳係數的C++。lang.moderated,Alexandrescu的顯着參與,我認爲他們推斷它是'alpha'('x^2 = x + 1'的正根) ) – 2010-11-22 07:28:24
大多數實現都使用一個簡單的數組,並且每當數組變滿時,容量加倍。這確實涉及到將現有元素複製到新的內存塊中,但補償的原因是您不必在一段時間內再次執行此操作。 (使用這種技術,元素添加運行在分期固定的時間內。)
- 1. C++調整動態數組大小
- 2. C++ - 調整大小動態數組
- 3. 如何在C++中實現動態調整大小的堆棧?
- 4. 信號量動態調整大小C#
- 5. 隊列數組實現調整大小
- 6. 如何創建一個動態調整大小的數組,或在c#中重新調整數組的大小?
- 7. 靜態數組,可變大小允許?
- 8. 調整動態數組的大小
- 9. 如何調整數組的大小C++
- 10. Tkinter允許窗口調整大小從一定的數量
- 11. 有序數組。調整大小不允許排序元素
- 12. 不允許調整窗口大小
- 13. 允許調整大小的窗口pyGame
- 14. 使用函數在C中動態調整大小的數組
- 15. 調整動態數組大小後可能出現的問題
- 16. 是否有一個自動調整大小的數組/動態數組實現C與glibc?
- 17. 嘗試在C++中動態調整數組大小時崩潰?
- 18. 如何調整動態模板數組的大小?
- 19. 如何更改動態調整大小的數組的指針?
- 20. 如何使用動態調整大小的字符串數組?
- 21. 如何實現調整大小()來改變動態成員數據的容量在C++中
- 22. C#DataViusalization圖動態調整大小
- 23. C++數組和向量動態項大小
- 24. 如何動態調整div大小?
- 25. 如何動態調整大小btn.group
- 26. 如何動態調整NSTextField的大小?
- 27. 動態調整大小並在C++中填充矢量矢量
- 28. 獲取模態以在窗口大小調整時動態調整大小
- 29. 如何使用jQueryUI調整div的最小大小 - 不允許面板移動?
- 30. Flash動態調整大小
另請注意,鏈表實現雖然看起來很吸引人,但並未滿足'std :: vector'要求,即*內存中的連續佈局。* – 2010-11-21 22:52:54