vector list兩種不一樣的容器

vector list 其實兩者是不一樣的數據結構罷了。數據結構

vector :線性數據結構;list:鏈式數據結構。性能

線性結構易於訪問數據元素,鏈式結構易於插入新的元素。索引

vector容器爲了支持快速隨機的訪問,其數據元素以連續的方式存放的。當插入一個新的元素時,若是容器中沒有多餘的內存空間存儲這個新元素,而元素必須以連續的方式存儲以便索引訪問。那麼vector容器必須從新分配內存空間。原有的內存空間中的元素被複制到新的內存空間中,接着插入新的元素,最後銷燬舊的內存空間。如過vector容器每次在插入新的元素時,都從新分配和撤銷內存空間,其性能是至關慢的。內存

list容器在插入一個新的元素時,標準庫只需建立一個新元素,而後把他鏈接在已存在的鏈表中。不須要建立新的內存空間,也不須要複製已存在的元素。效率

由此能夠推論。通常而言,使用list容器優於vector容器。容器

但標準庫的實現者使用這樣的策略:以最小的代價連續存儲元素,由此帶來的訪問元素的便利米不了存儲的代價。鏈表

爲了使vector容器實現快速的內存分配,其所分配的內存空間要比實際所需的多一次。vector容器預留了這些額外的存儲區,用來存儲新插入的元素。數據

所以在實際的應用中,vector容器比list容器、deque容器增加效率更高。內存分配

相關文章
相關標籤/搜索