STL详解(七)—— stack和queue的介绍及使用
stack
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。
stack的定义方式
方式一: 使用默认的适配器定义栈。
stack<int> st1;
方式二: 使用特定的适配器定义栈。
stack<int, vector<int>> st2; stack<int, list<int>> st3;
注意: 如果没有为stack指定特定的底层容器,默认情况下使用deque。
stack的使用
stack当中常用的成员函数如下:
示例:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main()
{
stack<int, vector<int>> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
cout << st.size() << endl; //4
while (!st.empty())
{
cout << st.top() << " ";
st.pop();
}
cout << endl; //4 3 2 1
return 0;
}
queue
队列是一种容器适配器,专门用在具有先进先出操作的上下文环境中,其只能从容器的一端插入元素,另一端提取元素。
queue的定义方式
方式一: 使用默认的适配器定义队列。
queue<int> q1;
方式二: 使用特定的适配器定义队列。
queue<int, vector<int>> q2; queue<int, list<int>> q3;
注意: 如果没有为queue指定特定的底层容器,默认情况下使用deque。
queue的使用
queue当中常用的成员函数如下:
示例:
#include <iostream>
#include <list>
#include <queue>
using namespace std;
int main()
{
queue<int, list<int>> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
cout << q.size() << endl; //4
while (!q.empty())
{
cout << q.front() << " ";
q.pop();
}
cout << endl; //1 2 3 4
return 0;
}
