1、vector
變長一維陣列,連續存放的記憶體塊,有保留記憶體,堆中分配記憶體;
支援操作,高效率的隨機訪問;
在最後增加元素時,一般不需要分配記憶體空間,速度快;在中間或開始操作元素時要進行記憶體拷貝效率低;
vector高效的原因在於配置了比其所容納的元素更多的記憶體,記憶體重新配置會花很多時間;
注:需要高效的隨即訪問,而不在乎插入和刪除使用vector。
2、list
雙向鍊錶,記憶體空間上可能是不連續的,無保留記憶體,
堆中分配記憶體;
不支援隨機訪問,開始和結尾元素的訪問時間快,其它元素都o(n);
在任何位置安插和刪除元素速度都比較快,
安插和刪除操作不會使其他元素的各個pointer,reference,iterator失效;
注:大量的插入和刪除,而不關係隨即訪問使用list。
3、deque
雙端佇列,在堆上分配記憶體,乙個堆儲存幾個元素,而堆之間使用指標連線;支援
操作,在
首端和末端插入和刪除元素比較快,在中部插入和刪除則比較慢,
像是list
和vector
的結合;
注:關心插入和刪除並關心隨即訪問折中使用deque。
4、set&multiset
有序集合,使用平衡二叉樹儲存,按照給定的排序規則(預設按less排序)對set中的資料進行排序;
set中不允許有重複元素,multiset中執行有重複元素;
兩者不支援直接訪問元素的操作;
因為是自動排序,查詢元素速度比較快;
不能直接改變元素值,否則會打亂原本正確的順序,必須先下刪除舊元素,再插入新的元素。
5、map&multimap
字典庫,乙個值對映成另乙個值,使用平衡二叉樹儲存,按照給定的排序規則對map中的key值進行排序;
map中的key值不允許重複,multimap中的key允許重複;
根據已知的key值查詢元素比較快;
插入和刪除操作比較慢。
STL容器效率比較
1 vector 變長一維陣列,連續存放的記憶體塊,有保留記憶體,堆中分配記憶體 支援操作,高效率的隨機訪問 在最後增加元素時,一般不需要分配記憶體空間,速度快 在中間或開始操作元素時要進行記憶體拷貝效率低 vector高效的原因在於配置了比其所容納的元素更多的記憶體,記憶體重新配置會花很多時間 注...
STL容器的效率比較
順序儲存容器 string vector list deque 關聯儲存容器 map底層採用的是樹型結構,多數使用平衡二叉樹實現,查詢某一值是常數時間,遍歷起來效果也不錯,只是每次插入值的時候,會重新構成底層的平衡二叉樹,效率有一定影響.set 和map都是無序的儲存元素,只能通過它提供的介面對裡面...
STL之效率比較
原文出處 1 vector 變長一維陣列,連續存放的記憶體塊,有保留記憶體,堆中分配記憶體 支援操作,高效率的隨機訪問 在最後增加元素時,一般不需要分配記憶體空間,速度快 在中間或開始操作元素時要進行記憶體拷貝效率低 vector高效的原因在於配置了比其所容納的元素更多的記憶體,記憶體重新配置會花很...