引入函式庫:vector
宣告方式:vector<陣列變數型別> 陣列名稱
取值方式:跟陣列一樣
\(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<變數型別> 名稱
\(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<變數型別> 名稱
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
\(O(1)\)
引入函式庫:deque, stack, queue都可以
宣告方式:deque<變數型別> 名稱
\(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
引入函式庫:queue
宣告方式:priority_queue<int> 名稱(最大)
priority_queue<int, vector<int>, greater<int> > 名稱(最小)
\(O(1)\)
\(O(1)\)
\(O(logn)\)
\(O(logn)\)
ZJ b606
引入函式庫:set
宣告方式:set<int> 名稱
\(O(1)\)
\(O(logn)\)
\(O(logn)\)
\(O(logn)\)
引入函式庫:map
宣告方式:map<鍵的型別, 值的型別> 名稱
可以把它當陣列用
map<string, int> m;
m["ten"] = 10;
m["five"] = 5;
cout << m["ten"] + m["five"] << '\n';\(O(1)\)
\(O(logn)\)
\(O(logn)\)
\(O(logn)\)
zj f607