2014-10-11 22 views
2

我不明白什麼時候需要使用矢量。有人請給我一個例子,你應該決定使用矢量而不是數組,謝謝。何時使用矢量而不是數組?

+0

試着寫無泄漏,異常安全的代碼來處理所創建的動態調整大小的C風格的數組,從回來,不知道對方的各種功能之間傳來傳去。製作數組的副本並在隨機位置插入/刪除元素。然後嘗試使用'std :: vector'編寫相同的代碼。如果你沒有時間這樣做:看看[此非常類似的問題(https://stackoverflow.com/questions/16046823/array-of-int-or-vector)。 – 5gon12eder 2014-10-11 03:00:17

回答

2

的主要優點是動態存儲器分配。 矢量以有限大小開始,當需要更多空間時將其大小加倍。平均插入複雜度仍然是O(1),這是這裏的主要收益。但它仍然比數組慢一點。

除此之外,你有一個載體做的一切可以用陣列來完成。但是,矢量更易於使用,因爲它們可以具有迭代器和花哨的構造函數和函數。

1

陣列是固定的大小。當你分配一個數組時,它包含n個元素。如果您需要添加第(n + 1)個元素,則必須分配一個新數組,複製所有舊元素,然後添加第(n + 1)個元素。使用矢量,這一切都爲您照顧。該向量保存一個數組作爲存儲並跟蹤有多少元素存在。如果支持矢量的數組空間不足,則矢量必須分配一個新的較大數組,複製舊元素,然後添加一個元素。但是這已經爲你實現了,每當你需要一個增長的數組時,你不必重新實現它。

創造更多複雜的數據結構時也有在抽象的優點。 vector是一個類,而數組不是。