前言:
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.top() << " ";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而不是topcout << "队列尾部"<<q.back() << " ";cout << "队列大小" << q.size() << " ";cout << endl;q.pop();}return 0;
}
在出队列的过程中,没有第二种可能,始终是先进先出