C++ STL 容器

set、map、堆、栈、队列、deque

pair / tuple

pair<int,int> p = {1, 2};
p.first; p.second;
make_pair(1, 2);

set / multiset

有序,去重(set),$O(\log n)$ 插入删除。

set<int> s;
s.insert(x); s.erase(x); s.count(x);
for (int x : s) { }

map

map<string, int> mp;
mp["key"]++;
if (mp.count("key")) { }

需要更快哈希:C++11 起 unordered_map(均摊 O(1))。

priority_queue(堆)

priority_queue<int> pq;  // 大根堆
priority_queue<int, vector<int>, greater<int>> pq;  // 小根堆
pq.push(x); pq.top(); pq.pop();

stack / queue / deque

stack<int> st;
queue<int> q;
deque<int> dq;  // 双端队列,单调队列常用