1. 概念
和stack一样,queue也是一种容器适配器,其通过对既有容器进行包装,形成一种FIFO(First-in First-out)的数据结构。queue允许在一端进行插入,另一端进行访问,如下:
2. API
queue提供的API接口比较简单,如下:
(constructor) Construct queue (public member function)
empty Test whether container is empty (public member function)
size Return size (public member function)
front Access next element (public member function)
back Access last element (public member function)
push Insert element (public member function)
pop Delete next element (public member function)
3. queue实现
和stack一样,queue也可以通过deque、list实现,有兴趣的同学可以参阅相关代码。queue所有元素的进出都必须符合FIFO的条件,不支持遍历,所以,queue不提供迭代器。
4. queue使用示例
代码如下:
#include
#include
using namespace std;
int main ()
{
queue myints;
cout << "0. size: " << (int) myints.size() << endl;
for (int i=0; i<5; i++) myints.push(i);
cout << "1. size: " << (int) myints.size() << endl;
myints.pop();
cout << "2. size: " << (int) myints.size() << endl;
return 0;
}
输出结果:
0. size: 0
1. size: 5
2. size: 4
7. 结语
queue是一种容器适配器,通过对其他容器进行包装,使得元素只能以FIFO的形式访问,由于queue和deque特点比较相似,所以一般库使用deque作为queue的支持容器。
参考文献:
STL源码剖析