C STL標準模板庫

2021-09-13 17:41:02 字數 2210 閱讀 8460

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 顯示...