人社局网站建设方案,北京 网站 建设,wordpress分享到微信二维码,淡水网站建设哪家便宜适配器是一种设计模式 #xff0c; 该种模式是将一个类的接口转换成客户希望的另外一个接口 。 虽然 stack 和 queue 中也可以存放元素#xff0c;但在 STL 中并没有将其划分在容器的行列#xff0c;而是将其称为 容器适配 器 #xff0c;这是因为 stack 和队列只是对其他容… 适配器是一种设计模式 该种模式是将一个类的接口转换成客户希望的另外一个接口 。 虽然 stack 和 queue 中也可以存放元素但在 STL 中并没有将其划分在容器的行列而是将其称为 容器适配 器 这是因为 stack 和队列只是对其他容器的接口进行了包装 STL 中 stack 和 queue 默认使用 deque stack基本介绍 1. stack 是一种容器适配器专门用在具有后进先出操作的上下文环境中其删除只能从容器的一端进行元素的插入与提取操作。 2. stack 是作为容器适配器被实现的容器适配器即是对特定类封装作为其底层的容器并提供一组特定的成员函数来访问其元素将特定类作为其底层的元素特定容器的尾部( 即栈顶 ) 被压入和弹出。 3. stack 的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类这些容器类应该支持以下操作 empty 判空操作 back 获取尾部元素操作 push_back 尾部插入元素操作 pop_back 尾部删除元素操作 4. 标准容器 vector 、 deque 、 list 均符合这些需求默认情况下如果没有为 stack 指定特定的底层容器默认情况下使用deque 。 stack() 构造空的栈 empty() 检测 stack 是否为空 size() 返回 stack 中元素的个数 top() 返回栈顶元素的引用 push() 将元素 val 压入 stack 中 pop() 将 stack 中尾部的元素弹出 stack模拟实现 queue基本介绍 1. 队列是一种容器适配器专门用于在 FIFO 上下文 ( 先进先出 ) 中操作其中从容器一端插入元素另一端提取元素。 2. 队列作为容器适配器实现容器适配器即将特定容器类封装作为其底层容器类 queue 提供一组特定的成员函数来访问其元素。元素从队尾入队列从队头出队列。 3. 底层容器可以是标准容器类模板之一也可以是其他专门设计的容器类。该底层容器应至少支持以下操作: empty 检测队列是否为空 size 返回队列中有效元素的个数 front 返回队头元素的引用 back 返回队尾元素的引用 push_back 在队列尾部入队列 pop_front 在队列头部出队列 4. 标准容器类 deque 和 list 满足了这些要求。默认情况下如果没有为 queue 实例化指定容器类则使用标准容器deque 。 queue() 构造空的队列 empty() 检测队列是否为空是返回 true 否则返回 false size() 返回队列中有效元素的个数 front() 返回队头元素的引用 back() 返回队尾元素的引用 push() 在队尾将元素 val 入队列 pop() 将队头元素出队列 queue模拟实现 stack和queue模板中都提到了deque那么我们来了解一下deque
deque介绍 deque( 双端队列 ) 是一种双开口的 连续 空间的数据结构 双开口的含义是可以在头尾两端进行插入和删除操作且时间复杂度为O(1) 与 vector 比较头插效率高不需要搬移元素与 list 比较空间利用率比较高 我们可以先看一下它的接口 仔细观察我们会发现它的接口包含了vector和list对数据进行操作的接口比如vector的[ ]按下标进行访问链表的头插头删等仿佛deque融合了vector和list的特点是一个十分完美的容器。 但是这个容器存在它的缺陷因此应用并不广泛它的结构跟vector和list对比如下图 通过对它的结构的分析我们不难发现deque非常适合头插头删尾插尾删的操作因此它十分适合用来适配栈和队列的默认适配器。 priority_queue基本介绍 1. 优先队列是一种容器适配器根据严格的弱排序标准它的第一个元素总是它所包含的元素中最大的。 2. 此上下文类似于堆在堆中可以随时插入元素并且只能检索最大堆元素 ( 优先队列中位于顶部的元素) 。 3. 优先队列被实现为容器适配器容器适配器即将特定容器类封装作为其底层容器类 queue 提供一组特定的成员函数来访问其元素。元素从特定容器的“ 尾部 ” 弹出其称为优先队列的顶部。 4. 底层容器可以是任何标准容器类模板也可以是其他特定设计的容器类。容器应该可以通过随机访问迭代器访问并支持以下操作 empty() 检测容器是否为空 size() 返回容器中有效元素个数 front() 返回容器中第一个元素的引用 push_back() 在容器尾部插入元素 pop_back() 删除容器尾部元素 5. 标准容器类 vector 和 deque 满足这些需求。默认情况下如果没有为特定的 priority_queue 类实例化指定容器类则使用vector 。 6. 需要支持随机访问迭代器以便始终在内部保持堆结构。容器适配器通过在需要时自动调用算法函数make_heap、 push_heap 和 pop_heap 来自动完成此操作。 priority_queue()/priority_queue(first, last) 构造一个空的优先级队列 empty( ) 检测优先级队列是否为空是返回 true 否则返回 false top( ) 返回优先级队列中最大 ( 最小元素 ) 即堆顶元素 push(x) 在优先级队列中插入元素 x pop () 删除优先级队列中最大 ( 最小 ) 元素即堆顶元素 priority_queue模拟实现 由于优先级队列实际上是一个堆而且默认实现的是小堆通过传递第三个模板参数利用仿函数(重载())实现大小堆的转换。