vetor, list, map, set的區別

List封裝了鏈表,Vector封裝了數組, list和vector得最主要的區別在於vector使用連續內存存儲的,他支持[]運算符,而list是以鏈表形式實現的,不支持[]。
Vector對於隨機訪問的速度很快,但是對於插入尤其是在頭部插入元素速度很慢,在尾部插入速度很快。List對於隨機訪問速度慢得多,因爲可能要遍歷整個鏈表才能做到,但是對於插入就快的多了,不需要拷貝和移動數據,只需要改變指針的指向就可以了。另外對於新添加的元素,Vector有一套算法,而List可以任意加入。

Map,Set屬於標準關聯容器,使用了非常高效的平衡檢索二叉樹:紅黑樹,他的插入刪除效率比其他序列容器高是因爲不需要做內存拷貝和內存移動,而直接替換指向節點的指針即可。
Set和Vector的區別在於Set不包含重複的數據。Set和Map的區別在於Set只含有Key,而Map有一個Key和Key所對應的Value兩個元素。
Map和Hash_Map的區別是Hash_Map使用了Hash算法來加快查找過程,但是需要更多的內存來存放這些Hash桶元素,因此可以算得上是採用空間來換取時間策略。

set 和map都是無序的保存元素,只能通過它提供的接口對裏面的元素進行訪問
set:集合, 用來判斷某一個元素是不是在一個組裏面,使用的比較少
map:映射,相當於字典,把一個值映射成另一個值,如果想創建字典的話使用它好了底層採用的是樹型結構,多數使用平衡二叉樹實現,查找某一值是常數時間,遍歷起來效果也不錯, 只是每次插入值的時候,會重新構成底層的平衡二叉樹,效率有一定影響.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章