前言:
stack与queue是STL中的容器适配器,而不是容器。何为适配器?给手机充电的充电器就是一种适配器,将高电压变成低电压。适配器是用来做转化的,不用来直接管理数据,而是在其他容器的基础上去封装转换。
容器适配器简介:
容器适配器stack是C++ STL(标准模板库)中的一个组件,它提供了一种后进先出(Last In First Out, LIFO)的数据结构。stack适配器并不直接实现栈的数据结构,而是通过封装其他顺序容器(如vector、deque、list等)来实现栈的功能。
因此stack不是容器,而是为了实现栈的功能的一个适配器,为了支持后进先出,stack等容器适配器取消了迭代器的遍历方式,取消了迭代器的实现。
栈的使用:
主要是为了使用栈的后进先出的性质。
int main()
{
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
st.push(5);
st.push(6);
while (!st.empty())
{
cout << () << " ";
st.pop();
}
cout << endl;
return 0;
}
入栈采用的函数是push,而不是push_back();
当然,我们入123456,不一定出654321。因为我们可以边入边出。
队列的使用:
int main()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
q.push(6);
while (!q.empty())
{
cout << "队列头部"<<q.front() << " "; //queue用的是front而不是top
cout << "队列尾部"<<q.back() << " ";
cout << "队列大小" << q.size() << " ";
cout << endl;
q.pop();
}
return 0;
}
在出队列的过程中,没有第二种可能,始终是先进先出