參考連接: C++ STL-Multiset.insert()函數html
STL - 經常使用函數總結 數組
文章目錄ide
STL - 經常使用函數總結1、vector2、string3、queue4、priority_queue(默認大根堆)5、stack6、deque(雙端隊列)7、set、map、muiltiset、multimap8、unordered_map/unordered_set/unordered_multimap/unordered_multiset函數
1、vector ui
常spa
用orm
函htm
數排序
:隊列
經常使用函數:
經常使用函數:
#include<vector>
vector<Type> V;
V.size();
V.empty();
V.clear();
V.front(),V.back();
V.push_back(),V.pop_back()
V.begin(),V.end()
reverse(V.begin(),V.end()); //翻轉數組
訪
問
方
式
與
正
常
數
組
訪
問
相
似
,
同
時
支
持
直
接
比
較
運
算
(
按
字
典
序
)
,
如
:
訪問方式與正常數組訪問類似,\\同時支持直接比較運算(按字典序),如:
訪問方式與正常數組訪問類似,同時支持直接比較運算(按字典序),如:
vector<int> V1(4,3),V2(5,4); //V1:3 3 3 3,V2:4 4 4 4 4,因此V1<V2
要
注
意
盡
量
減
少
內
存
空
間
的
申
請
次
數
,
比
較
耗
時
。
要注意儘可能減小內存空間的申請次數,比較耗時。
要注意儘可能減小內存空間的申請次數,比較耗時。
2、string
常
用
函
數
:
經常使用函數:
經常使用函數:
#include<string>
string S;
S.substr(1,2); //從下標1開始,長度爲2的子串
S.substr(1); //下標從1開始,直到尾部的子串
S.c_str(); //返回爲C語言字符數組的首地址
S.size();
S.emtpy();
S.clear();
S.find(sub,pos); //從S的pos位置開始,查找sub子串,若存在返回第一次出現的位置,不然返回-1
reverse(S.begin(),S.end()); //翻轉字符串
3、queue
常
用
函
數
:
經常使用函數:
經常使用函數:
#include<queue>
queue<Type> Q;
Q.size();
Q.emtpy();
Q.front();
Q.back();
Q.push(); //隊尾插入
Q.pop(); //隊頭彈出
Q = queue<Type>(); //清空隊列。 注意,queue沒有clear函數
4、priority_queue(默認大根堆)
#include<queue>
#include<vector>
priority_queue<Type> Q; //這樣定義默認小根堆
priority_queue<int,vector<int>,greater<int>> Q; //這樣定義爲大根堆
//或者元素取負號入堆
Q.size();
Q.emtpy();
Q.push(); //隊尾插入
Q.pop(); //隊頭彈出
Q.top(); //堆頂元素
Q = priority_queue<Type>(); //清空隊列。 priority_queue沒有clear函數
5、stack
常
用
函
數
:
經常使用函數:
經常使用函數:
#include<stack>
stack<Type> S;
S.size();
S.emtpy();
S.top(); //棧頂元素
S.pop(); //彈出棧頂
S.push(); //棧頂插入
S = stack<Type>(); //清空棧。 stack沒有clear函數
6、deque(雙端隊列)
常
用
函
數
:
經常使用函數:
經常使用函數:
#include<deque>
deque<Type> deq;
deq.size();
deq.emtpy();
deq.front()/deq.back();
deq.push_back()/deq.pop_back();
deq.push_front()/deq.pop_front();
deq.clear();
deq.begin();deq.end();
deq[];
缺
點
:
速
度
慢
缺點:速度慢
缺點:速度慢
7、set、map、muiltiset、multimap
基
於
平
衡
二
叉
樹
(
紅
黑
樹
)
,
動
態
維
護
有
序
序
列
。
基
本
上
所
有
操
做
都
是
O
(
l
o
g
n
)
的
,
除
了
s
i
z
e
,
e
m
p
t
y
,
c
l
e
a
r
函
數
常
用
函
數
:
基於平衡二叉樹(紅黑樹),動態維護有序序列。\\基本上全部操做都是O(logn)的,除了size,empty,clear函數\\經常使用函數:
基於平衡二叉樹(紅黑樹),動態維護有序序列。基本上全部操做都是O(logn)的,除了size,empty,clear函數經常使用函數:
#include<set>
#include<map>
set<Type> s; //不能有重複元素
multiset<Type> ms; //能夠有重複元素
map<Type> mp; //不能有重複元素
multimap<Type> mmp; //能夠有重複元素
size();
emtpy();
clear();
begin()/end(); //--,++ 前驅與後繼,O(logn)
//set/multiset
insert(); //插入一個元素,O(logn)
find(); //查找一個元素。不存在就返回end();
count(); //返回某個元素的個數
erase();
// erase(x) 刪除全部等於x的元素
// erase(iterater) 刪除這個迭代器
lower_bound()/upper_bound();
//map/multimap
insert(); //插入的是一個pair
erase(); //刪除的是pair或一個迭代器
find(); //查找一個元素。不存在就返回end();
mp[]/mmp[]; //看成數組使用,時間複雜度是O(logn)的
lower_bound()/upper_bound();
8、unordered_map/unordered_set/unordered_multimap/unordered_multiset
所
有
操
做
與
七
類
似
,
且
增
刪
改
查
的
時
間
復
雜
度
是
O
(
1
)
的
,
但
是
不
支
持
l
o
w
e
r
_
b
o
u
n
d
和
u
p
p
e
r
_
b
o
u
n
d
即
−
−
,
+
+
。
即
與
排
序
有
關
的
所
有
操
做
是
不
支
持
的
。
全部操做與七相似,且增刪改查的時間複雜度是O(1)的,可是不支持lower\_bound和upper\_bound即--,++。\\即與排序有關的全部操做是不支持的。
全部操做與七相似,且增刪改查的時間複雜度是O(1)的,可是不支持lower_bound和upper_bound即−−,++。即與排序有關的全部操做是不支持的。