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