STL容器和迭代器用法归纳(3)

本文介绍了STL中的三种容器适配器:queue、priority_queue 和 stack。详细讲解了它们的实现原理、特点及应用场景,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        STL提供了三个容器适配器:queue、priority_queue、stack。这些适配器都是包装了某个顺序容器的包装器(适配器:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作)。适配器没有提供迭代器,也不能同时插入或删除多个元素。

 

五、queue:提供了标准的“先进先出”(FIFO)语义。在<queue>头文件中定义,形式如下:

 

 

        第一个参数指定要在queue中存储的类型,第二个参数规定queue适配的底层容器,可供选择的容器只有dequeue和list。对大多数用途使用默认的dequeue。

1.queue接口很简单:push,pop,back,front,size,empty。

    

注意的是,pop不返回弹出的元素。如果想保留一个副本,就须先用front获得队头元素。

2.如果想对实际生活中的“先来先服务”语义建模,就应当使用一个队列结构。其插入删除元素都较快(常量时间)。
六、priority_queue:也是一个队列,其元素按有序顺序排列。其不采用严格的FIFO顺序,给定时刻位于队头的元素正是有最高优先级的元素。如果两个元素有相同的优先级,那么它们在队列中的顺序就遵循FIFO语义。在<queue>头文件中定义,形式如下:
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>头文件中定义,形式如下:

 
可以使用三个标准顺序容器中的任何一个作为stack的底层模型。
1. 其提供的接口与queue基本相同。只是stack提供的是top,而不是front,毕竟两者所表现的语义不同。
2.如果想对实际生活中的“先来后服务”语义建模,就应当使用栈。其插入删除元素都较快(常量时间)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值