欢迎光临散文网 会员登陆 & 注册

C++ 容器适配器

2023-04-27 20:42 作者:S-a-i_  | 我要投稿

除了顺序容器外,标准库还定义了三个顺序容器适配器,stack、queue和priority_queue。适配器是标准库中的一个通用概念。容器、迭代器和函数都有适配器。本质上一个适配器就是一种机制,使某种事物的行为看起来像另外一种事物。

定义一个适配器

每个适配器有两个构造函数。

默认情况下stack和queue是基于deque实现的,priority_queue是再vector上实现的。

所有适配器都要求容器具有添加和删除元素的能力,所以适配器不能构造再array之上。适配器要求具有访问尾元素的能力,所以不能用forward_list。

stack只要求push_back、pop_back和back操作,因此可以使用除array和forward_list之外的容器。

queue要求push_back、front和push_front,所以他不能基于vector构造。

priority_queue除了front、push_back和pop_back之外还要求随机访问,所以不能基于list。


栈适配器

stack类定义在stack头文件中。

intStack.push语句试图在底层的deque对象上调用push_back,虽然stack基于deque实现,但是我们不能直接使用deque的操作,所以stack必须用自己的操作——push


队列适配器

queue和priority_queue定义在queue头文件中。

默认情况下标准库在元素类型上使用<运算符来确定相对优先级,我们将在后面学习如何重载这个默认设置。

C++ 容器适配器的评论 (共 条)

分享到微博请遵守国家法律