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