第一種:順序容器
1、vector:可變陣列。支援快速隨機訪問。在尾部之外的位置插入或刪除元素可能很慢;vector的另乙個常見的問題就是clear操作。clear函式只是把vector的size清為零,但vector中的元素在記憶體中並沒有消除,所以在使用vector的過程中會發現記憶體消耗會越來越多,導致記憶體洩露,現在經常用的方法是swap函式來進行解決:
vectorv;
v.push_back(1);
v.push_back(2);
v.push_back(1);
v.push_back(2);
vector().swap(v);
//或者 v.swap(vector());
利用swap函式,和臨時物件交換,使v物件的記憶體為臨時物件的記憶體,而臨時物件的記憶體為v物件的記憶體。交換以後,臨時物件消失,釋放記憶體。
2、deque:雙端佇列。支援快速隨機訪問。在頭尾位置插入/刪除速度很快;
3、list:雙向鍊錶。只支援雙向順序訪問。在list任何位置進行插入/刪除操作速度都很快;
a) 如果你需要高效的隨即訪問,而不在乎插入和刪除的效率,使用vector
b) 如果你需要大量的插入和刪除,而不關心隨即訪問,則應使用list
c) 如果你需要隨即訪問,而且關心兩端資料的插入和刪除,則應使用deque
4、forward_list:單向鍊錶。只支援單向順序訪問。在鍊錶任何位置進行插入/刪除操作速度都很快;
5、array:固定大小陣列。支援快速隨機訪問。不能新增或刪除元素;
6、string:與vector相似的容器,但專門用於儲存字元。隨機訪問快。在尾部插入/刪除速度快;
第二種:關聯容器
按關鍵字有序儲存元素:
1、map:關聯陣列。儲存關鍵字-值對;
2、set:關鍵字即值,即只儲存關鍵字的容器;
3、multimap:關鍵字可重複出現的map;
4、multiset:關鍵字可重複出現的set;
無序集合:
1、unordered_map:用雜湊函式組織的map;
2、unordered_set:用雜湊函式組織的set;
3、unordered_multimap:用雜湊函式組織的map,關鍵字可以重複出現;
4、unordered_multiset:用雜湊函式組織的set,關鍵字可以重複出現。
STL 容器應用場景
stl中常見容器,主要包括如下幾種 vector,list,deque,set,multiset,map,multimap。選用合適的容器,對編寫高效的程式,簡潔的 有重要意義 最近就專案中就涉及到乙個容器選擇的問題,設計乙個資料結構時,開始使用了乙個錯誤的容器,容器設計非常複雜,使用起來也特別不方...
STL各容器使用場景
原文 stl中常見容器,主要包括如下幾種 vector,list,deque,set,multiset,map,multimap。選用合適的容器,對編寫高效的程式,簡潔的 有重要意義 最近就專案中就涉及到乙個容器選擇的問題,設計乙個資料結構時,開始使用了乙個錯誤的容器,容器設計非常複雜,使用起來也特...
爬蟲使用場景分類
爬蟲在使用場景中的分類 通用爬蟲 抓取系統重要組成部分。抓取的是一整張頁面資料 聚焦爬蟲 是建立在通用爬蟲的基礎之上。抓取的是頁面中特定的區域性內容 增量式爬蟲 檢測 中資料更新的情況。只會抓取 中最新更新出來的資料。爬蟲的矛與盾 反爬機制 門戶 可以通過制定相應的策略或者技術手段,防止爬蟲程式進行...