Lists

Lists使用一個doubly linded list(雙向鏈表)來管理元素,決定了list的內部結構和vector與deque迥然不同,所以先在幾個主要方面與前述二者存在明顯的區別。

  • 根據鏈表的性質,list不支持隨機存取,意思是如果你想存取第i位置上的元素就必須順着鏈表訪問到i位置。

  • 任何位置上的插入刪除操作都能在常數時間內完成,畢竟無需移動任何元素只通過內部的一些指針操作即可。

  • 安插和刪除動作不會導致指向其他各元素的各個pointers、references、iterators失效。

  • list對於異常有這樣的處理方式:要麼成功,要麼什麼都不發生。

  • 由於不支持隨機存取,list即不提供下標操作符也不提供at()
  • list並未提供容量capacity()、空間重新分配reverse()等操作函數,因爲全無必要。每個元素都有自己的內存,在被刪除之間一直有效。
  • list提供了不好特殊的成員函數,專門用於移動元素。較之同名的STL通用算法, 這些函數執行起來更快,因爲無需拷貝和移動,只需調整若干指針即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章