棧是基本的數據結構:
stack<Type> s;
s.push(item);
s.pop(); // 刪除棧頂的元素但不返回
s.top(); // 返回棧頂的元素但不刪除
s.size();
s.empty();
隊列的操作差不多:
queue<Type> q;
q.push(item);
q.front(); // 返回隊首元素但不刪除
q.pop(); // 刪除隊首元素
q.back(); // 返回隊尾元素但不刪除
q.size();
q.empty();
優先隊列,可以是大頂堆,也可以是小頂堆。下面的pop/push都是O(logn)。可以用優先隊列進行堆排序和Dijkstra算法的優化。
priority_queue<Type> q;
q.top(); // 返回具有最高優先級的元素值但不刪除
q.pop(); // 刪除最高優先級元素
q.push(item); // 插入新元素