動態數組是計算機程序設計中使用的一種數據結構,它將多個計算對象作為一個組,并且可以隨意調整大小以適應不同數量的對象。動態數組保存在一個連續的內存塊中,因此對元素的訪問既高效又快速。動態數組也稱為向量或列表,取...
動態數組是計算機程序設計中使用的一種數據結構,它將多個計算對象作為一個組,并且可以隨意調整大小以適應不同數量的對象。動態數組保存在一個連續的內存塊中,因此對元素的訪問既高效又快速。動態數組也稱為向量或列表,取決于使用它們的計算機語言。盡管有這些名稱,任何特定的列表或向量都可能不是動態數組,由于列表和向量可以不同于數組和彼此實現。

C++包含一個稱為vector的動態數組類,它位于一組稱為標準模板庫的類中。C++包含一個名為vector的動態數組類,它位于一組稱為標準模板庫的類中。支持該類的數組可以通過迭代器或索引訪問。它可以按需調整大小是一個很大的優勢,但它可能會誘使程序員產生一種錯誤的安全感,因為它不像看上去那么健壯。支持向量的動態數組無法確保訪問請求有效。與靜態數組一樣,如果程序試圖訪問尚未分配給動態數組的內存,則動態數組可能存在邊界檢查和內存損壞問題Java包含三個不同的動態數組類:Vector、ArrayList和CopyOnWriteArrayList數組中的元素只由索引訪問,并且試圖訪問數組外的索引通常不會導致內存損壞問題。java vector類大致相當于C++向量類,并且不同步以允許多線程訪問。都是線程安全的。在這三個類中,CopyOnWriteArrayList是最勞動密集的類,因為每次向數組中寫入新值時,它都會完全重新創建動態數組。動態數組的實現方式基本上是相同的,而不考慮所涉及的計算機語言,而是取決于其中的特定語言動態數組可以是建立在它之上的其他功能。像靜態數組一樣,動態數組不限制可以存儲在其中的對象的類型,只要它們都是同一類型的對象。程序員永遠不需要直接訪問動態數組;它總是可以通過一個封裝數組的類來完成,為了便于使用,正確使用這些數組可以幫助程序員在代碼內部組織數據,還可以創建易于維護的可理解代碼