我不明白什麼時候需要使用矢量。有人請給我一個例子,你應該決定使用矢量而不是數組,謝謝。何時使用矢量而不是數組?
2
A
回答
2
的主要優點是動態存儲器分配。 矢量以有限大小開始,當需要更多空間時將其大小加倍。平均插入複雜度仍然是O(1),這是這裏的主要收益。但它仍然比數組慢一點。
除此之外,你有一個載體做的一切可以用陣列來完成。但是,矢量更易於使用,因爲它們可以具有迭代器和花哨的構造函數和函數。
1
陣列是固定的大小。當你分配一個數組時,它包含n個元素。如果您需要添加第(n + 1)個元素,則必須分配一個新數組,複製所有舊元素,然後添加第(n + 1)個元素。使用矢量,這一切都爲您照顧。該向量保存一個數組作爲存儲並跟蹤有多少元素存在。如果支持矢量的數組空間不足,則矢量必須分配一個新的較大數組,複製舊元素,然後添加一個元素。但是這已經爲你實現了,每當你需要一個增長的數組時,你不必重新實現它。
創造更多複雜的數據結構時也有在抽象的優點。 vector是一個類,而數組不是。
相關問題
- 1. 何時使用數組而不是矢量/字符串?
- 2. 我應該使用矢量而不是數組嗎?
- 3. 在C++中增加數組的大小而不使用矢量
- 4. 我可以使用數組切片而不是創建矢量嗎?
- 5. 結果是矢量值,而不是標
- 6. 對矢量而不是矢量<pair>?
- 7. 最大heapify無限循環時使用數組,但不是矢量
- 8. 更名矢量而不是複製它
- 9. 熊貓矢量化而不是循環
- 10. 使用矢量矢量的多個數組
- 11. 如何使用const數組而不是const變量?
- 12. 如何正確使用數組,而不是使用動態標量變量
- 13. 用不同矢量插入數組
- 14. 在R中使用矢量而不是循環
- 15. 矢量化方法,而不是使用循環
- 16. 如何更精美地使用矢量和而不是使用'+'運算符
- 17. 如何使用矢量創建一個不齊的數組?
- 18. 矢量到1D數組的矢量
- 19. 在java中何時使用向量而不是數組,反之亦然?
- 20. 使用數組,而不是參數
- 21. 如何使用「矢量矢量」?
- 22. 將「矢量矢量」複製到「數組數組」中
- 23. 如何對齊2個數組而不使用臨時數組?
- 24. 使用數組,而不是在JavaScript
- 25. 使用數組而不是字典TCL
- 26. 使用數組而不是列表Java
- 27. 使用對象而不是數組
- 28. PHP使用對象而不是數組
- 29. 使用列表,而不是numpy數組
- 30. 使用數組,而不是在JS
試着寫無泄漏,異常安全的代碼來處理所創建的動態調整大小的C風格的數組,從回來,不知道對方的各種功能之間傳來傳去。製作數組的副本並在隨機位置插入/刪除元素。然後嘗試使用'std :: vector'編寫相同的代碼。如果你沒有時間這樣做:看看[此非常類似的問題(https://stackoverflow.com/questions/16046823/array-of-int-or-vector)。 – 5gon12eder 2014-10-11 03:00:17