stl共有6中元件:容器、容器介面卡、迭代器、演算法、函式物件(仿函式)和函式介面卡。
最常用的是順序容器,順序容器內的元素按其位置進行儲存和訪問。除順序容器外,標準庫還定義了幾種關聯容器。這裡我們主要講一下順序容器。
標準庫定義了三種順序容器型別:vector、list和deque,它們的差別在於訪問元素的方式,以及新增或刪除元素相關操作的執行代價。
[vector]: 向量容器,底層資料結構是記憶體可2倍擴容的陣列 ,只能在容器末尾新增新元素。vector效率比[deque]高 因為vector記憶體連續
下面是容器的一些操作:vectorarray;
array.resize(10); array[0].resize(20);
reserve/resize/size/empty
push_back/pop_back o(1)
insert/erase o(n)
[deque]: 雙端佇列 動態開闢的二維陣列 map_size queue_size
push_back/pop_back o(1)
push_front/pop_front o(1)
insert/erase o(n)
[list] :鍊錶容器 帶頭節點的雙向鍊錶
vectorveclist;
push_back/pop_back o(1)
push_front/pop_front o(1)
insert/erase o(1)
splice 分片函式
容器介面卡 有三種 :
stack棧 :依賴的容器是deque,原因是空間利用率高。
stack s1;
stacks2;
s1.push(10); s1.pop(); s1.top(); s1.empty(); s1.size();
queue佇列 :依賴的容器是deque
queue q1;
queueq3;
q1.push(10);
q1.pop();
q1.front();
q1.back();
q1.empty();
q1.size();
priority_queue優先順序佇列 :依賴的容器是vector ,原因是堆結構計算下標左孩子2i+1,右孩子2i+2 ,所以記憶體需要連續大根堆值越大,優先順序越大。
priority_queue maxheap; 大根堆
maxheap.push(10);
maxheap.pop();
maxheap.top();
maxheap.empty();
maxheap.size();
priority_queueminheap;大根堆
關聯容器(紅黑樹 雜湊表)
雜湊表-無序容器 o(1)
unordered_set : 單重集合 不允許值重複 key
unordered_multiset : 多重集合 允許值重複
insert(val)
erase(val)
迭代器find
count(val)
unordered_map : 單重對映表 [key, value]
unordered_multimap : 多重對映表
insert(make_pair(key, value));
erase(key)
hashmap[key] = value;
迭代器unordered_mapmap;
auto it = map.find(100);
if(it != map.end())
{ cout<<"key:"iterator
const_iterator
=> begin() end()
reverse_iterator
const_reverse_iterator
=> rbegin() rend()
泛型演算法
sort(it1, it2)
sort(it1, it2, 函式物件) lambda表示式
find
find_if
binary_search
#include //使用容器
#include //使用泛型演算法
#include //c++stl的函式物件
C STL 標準模板庫
1.泛型程式設計 在c 中,模板是泛型程式設計的基礎。下面有乙個stl初體驗的 include include include include include include using namespace std 自定義函式物件 template class square int test int...
c STL(標準模板庫)
c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。元件描述 容器 containers 容器是用來管理某一類物件的集合。c 提供了各種不同型別的容器,比如 deque list vecto...
C STL(標準模板庫)筆記
c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。c 標準模板庫的核心包括以下三個元件 示例 include include using namespace std int main 顯示...