C 標準模板庫介紹

2021-10-06 16:26:07 字數 1903 閱讀 6918

setstring

mapqueue

priority_queue

priority_queue常見的用途

stack

pair

vector vi[100]

vectorvi;

區別可以理解成乙個是乙個一維長度已經固定,乙個是可變的

(1)通過下邊

(2)通過迭代器

vector::iterator it=vi.begin()

v[i]和*(v.begin()+i)等價

vector常用函式:

(1)push_back()在容器尾部新增元素

(2)pop_back()刪除尾元素

(3)size()

(4)clear() 時間複雜度 o(n)

(5)insert()用來響vector的任意迭代器it處插入乙個元素x,時間複雜度o(n)

(6)erase()

刪除單個元素erase(it)

刪除乙個區間內所有元素erase[first,last) 兩個時間複雜度都為o(n)

(7)v.end()容器尾元素位址的下乙個位址

集合:內部自動有序且不含重複元素的容器(自動按遞增排序)

set< typename> name

總的來說和vector類似

只能通過迭代器訪問(iterator)

set< typename>::iterator it;

for(it=name.begin();it!=name.end();it++);

(1)insert();

(2)find(value)返回set中對應值為value的迭代器,時間複雜度為o(logn),n為set內元素個數

(3)erase(),可以結合set一起用

erase(it);

erase(s.begin(),s.end());

(4)size();

(5)clear()

如果不需要排序可以使用unordered_set速度比set快得多

string str;

string str=「abcd」;

(1)通過下標訪問

(2)通過迭代器訪問

(1)operator +=

(2)compare operator

(3)size()

(4)insert

(5)erase();

(6)clear()

(7)substr(pos,len)返回pos號位開始,長度為len的子串

(8)

(9)replace(pos,len,str2)把str從pos處開始的長度為len的子串替換為str2

replace(it1,it2,str2)

mapmp;

mapmpl

(1)通過下標訪問

(2)通過迭代器訪問

for(map::iterator it=mp.begin();it!=mp.end();it++)

(1)find(key)返回key的對映的迭代器

(2)erase()

刪除單個元素

(3)size()

(4)clear()

unorder_map用來處理只對映不排序的需求,速度比map要快的多。

當需要實現廣度優先搜尋時,可以不用自己手動實現乙個佇列,而是用queue作為替代

優先佇列中的這個函式和sort中的cmp函式的效果剛剛好是相反的

struct cmp

}priority_queuek;

效果和上面用友元函式過載一模一樣

set也可以通過第一種友元函式對運算子的過載方法來定義優先順序priority_queue可以用來解決一些貪心問題,也可以對dijkstra演算法進行優化

stack用來模擬一些遞迴演算法

標準模板庫( ) 介紹標準模板庫

標準模板庫就是類與函式模板的大集合。stl共有6種元件 容器,容器介面卡,迭代器,演算法,函式物件和函式介面卡。1 容器 容器是用來儲存和組織其他物件的物件。stl容器類的模板在標準標頭檔案中定義。1 序列容器是上面圖中的前三類 容器的操作 2 deque容器 非常類似vector,且支援相同的操作...

C 標準模板庫元件介紹

在前幾天的阿里面試過程中,問到了我標準模板庫的繼承體系。平時開發對vector,list,map,set stack等容器用的比較多,但是沒有深入研究過。經歷過面試,發現了很多需要完善和提高的地方。但是有個問題哦,標準模板庫中得幾大元件沒有啥繼承關係,只是說有某些容器之間有適配關係。所謂容器,就是存...

C 標準模板庫(STL介紹) string

string str1 ab str2 xy string str str1 str2 比較規則是字典序 方法一 string str abcxyz str2 opq str.insert 3 str2 輸出 abcopqxyz 方法二 string str abcxyz str2 opq str....