STL的容器分類及使用場景

2021-09-17 03:35:14 字數 1170 閱讀 8620

第一種:順序容器

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。選用合適的容器,對編寫高效的程式,簡潔的 有重要意義 最近就專案中就涉及到乙個容器選擇的問題,設計乙個資料結構時,開始使用了乙個錯誤的容器,容器設計非常複雜,使用起來也特...

爬蟲使用場景分類

爬蟲在使用場景中的分類 通用爬蟲 抓取系統重要組成部分。抓取的是一整張頁面資料 聚焦爬蟲 是建立在通用爬蟲的基礎之上。抓取的是頁面中特定的區域性內容 增量式爬蟲 檢測 中資料更新的情況。只會抓取 中最新更新出來的資料。爬蟲的矛與盾 反爬機制 門戶 可以通過制定相應的策略或者技術手段,防止爬蟲程式進行...