STL
STL
- Standard Templete Library
 - 有很多別人幫你寫好的工具
 - 很好用
 
vector
引入函式庫:vector
宣告方式:vector<陣列變數型別> 陣列名稱
取值方式:跟陣列一樣
可向後延伸的陣列
- size():回傳大小
 - push_back():在陣列尾端新增一個數
 - pop_back():
 
常用函式
\(O(1)\)
\(O(1)\)
\(O(1)\)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int> a;
	a.push_back(5);
	a.push_back(3);
	a.push_back(4);
	cout << a.size() << '\n'; //輸出3
	cout << a[1] << '\n'; //輸出3
	a.pop_back();
	cout << a.size() << '\n'; //輸出2
}
stack
從上面放,從上面拿
引入函式庫:stack
宣告方式:stack<變數型別> 名稱
常用函式
- size():回傳大小
 - top():回傳頂端的值
 - push():在最頂端放入值
 - pop():刪除最頂端的值
 
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
#include <iostream>
#include <stack>
using namespace std;
int main()
{
	stack<int> s;
	s.push(0);
	s.push(1);
	cout << s.size() << '\n'; //輸出2
	cout << s.top() << '\n'; //輸出1
	s.pop();
	cout << s.top() << '\n'; //輸出0
	
}
queue
像排隊一樣
引入函式庫:queue
宣告方式:queue<變數型別> 名稱
常用函式
- size():回傳大小
 - front():回傳前面的值
 - back():回傳後面的值
 - push():從後面加一個值
 - pop():從前面刪掉一個值
 
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
deque
結合stack和queue
引入函式庫:deque, stack, queue都可以
宣告方式:deque<變數型別> 名稱
常用函式
- size():回傳大小
 - front():回傳前面的值
 - back():回傳後面的值
 - push_front():從前面新增一個值
 - push_back():從後面新增一個值
 - pop_front():從前面刪掉一個值
 - pop_back():從後面刪掉一個值
 
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
練習題
stack:
zj b923
zj c123
zj a565
zj e924
queue:
zj e447
進階題:
tcirc judge d028
tcirc judge d029
priority_queue
優先度最高的在最上面
引入函式庫:queue
宣告方式:priority_queue<int> 名稱(最大)
priority_queue<int, vector<int>, greater<int> > 名稱(最小)
常用函式
- size():回傳大小
 - top():回傳最上面(最大)的值
 - pop():把最上面(最大)的值刪掉
 - push():加入一個值
 
\(O(1)\)
\(O(1)\)
\(O(logn)\)
\(O(logn)\)
ZJ b606
練習題
set
集合
引入函式庫:set
宣告方式:set<int> 名稱
常用函式
- size():回傳大小
 - insert():插入一個值
 - find():找一個值的位置
 - lower_bound():找第一個大於等於的
 
\(O(1)\)
\(O(logn)\)
\(O(logn)\)
\(O(logn)\)
map
字典
引入函式庫:map
宣告方式:map<鍵的型別, 值的型別> 名稱
可以把它當陣列用
map<string, int> m;
m["ten"] = 10;
m["five"] = 5;
cout << m["ten"] + m["five"] << '\n';常用函式
- size():回傳大小
 - insert():插入一個值
 - find():找一個值的位置
 - lower_bound():找第一個大於等於的
 
\(O(1)\)
\(O(logn)\)
\(O(logn)\)
\(O(logn)\)
zj f607
STL
By scottchou
STL
- 297