嵌入式100題(54) vector list異同

2021-10-20 10:46:09 字數 685 閱讀 1935

vector

連續儲存的容器,動態陣列,在堆上分配空間。

底層實現:陣列。

兩倍容量增長:vector 增加(插入)新元素時,如果未超過當時的容量,則還有剩餘空間,那麼直接新增到最後(插入指定位置),然後調整迭代器。如果沒有剩餘空間了,則會重新配置原有元素個數的兩倍空間,然後將原空間元素通過複製的方式初始化新空間,再向新空間增加元素,最後析構並釋放原空間,之前的迭代器會失效。

訪問:o(1)

插入:在最後插入(空間夠):很快。

在最後插入(空間不夠):需要記憶體申請和釋放,以及對之前資料進行拷貝。

在中間插入(空間夠):記憶體拷貝。

在中間插入(空間不夠):需要記憶體申請和釋放,以及對之前資料進行拷貝。

刪除

在最後刪除:很快。

在中間刪除:記憶體拷貝。

適用場景:經常隨機訪問,且不經常對非尾節點進行插入刪除。

list

動態鍊錶,在堆上分配空

嵌入式100題(48) 氣泡排序

氣泡排序 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,...

嵌入式100題(51) 歸併排序

歸併排序 歸併排序是把序列遞迴地分成短序列,遞迴出口是短序列只有1個元素 認為直接有序 或者2個序列 1次比較和交換 然後把各個有序的段序列合併成乙個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定性。那...

嵌入式100題(51) 歸併排序

歸併排序 歸併排序是把序列遞迴地分成短序列,遞迴出口是短序列只有1個元素 認為直接有序 或者2個序列 1次比較和交換 然後把各個有序的段序列合併成乙個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定性。那...