STL提供了三个容器适配器:queue、priority_queue、stack。这些适配器都是包装了某个顺序容器的包装器(适配器:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作)。适配器没有提供迭代器,也不能同时插入或删除多个元素。
五、queue:提供了标准的“先进先出”(FIFO)语义。在<queue>头文件中定义,形式如下:
第一个参数指定要在queue中存储的类型,第二个参数规定queue适配的底层容器,可供选择的容器只有dequeue和list。对大多数用途使用默认的dequeue。
1.queue接口很简单:push,pop,back,front,size,empty。
注意的是,pop不返回弹出的元素。如果想保留一个副本,就须先用front获得队头元素。
template<typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type> > class priority_queue;
默认适配的底层容器是vector,也可以使用deque,list不能用,因为priority_queue要求能对元素随机访
问以便进行排序。
1. 与queue相比,priority_queue提供的接口还少一个。push和pop允许分别插入和删除元素,top会返回
队头元素的一个const引用。同时,它也支持size和empty。
2.优先级队列用于对一些超常的队列建模。它的插入和删除一般都比简单队列的插入和删除慢,因为必须对元素
重新调整顺序,以支持按优先级排序。
七、stack:提供了标准的“后进先出”(LIFO)语义。在<stack>头文件中定义,形式如下: