C++——stack与queue底层理解,优先级队列、仿函数、容器适配器

目录

一、 stack栈容器深入理解

二、queue队列容器深入理解 

2.1 queue的概念

2.2 queue的使用

2.3 queue的模拟实现

三、priority_queue的介绍和使用

3.1 priority_queue的介绍

3.2  priority_queue的使用

3.3 priority_queue的模拟实现

四、容器适配器

标准库中stack和queue的底层结构

在前面的C++编程提高学习中,已经初步了解到了stack与queue容器的一些基本接口,但是其底层是什么实现的在下面将进行介绍。

一、 stack栈容器深入理解

1.1 stack概念

1.2  stack使用

1.3  stack的模拟实现

二、queue队列容器深入理解 

2.1 queue的概念

2.2 queue的使用

2.3 queue的模拟实现

三、priority_queue的介绍和使用

3.1 priority_queue的介绍

3.2  priority_queue的使用

优先级队列默认大的优先级高,传的是less仿函数,底层是一个大堆,想控制小的优先级高,传greater仿函数,底层是一个小堆。

仿函数

堆的向上调整算法

//向上调整算法
void AdjustUp(int child)
{Compare comFunc;//仿函数int parent = (child - 1) / 2;while (child > 0){//利用仿函数建大堆或小堆if (comFunc(_con[parent], _con[child])){//如果为真,交换swap(_con[parent], _con[child]);//更新child和parentchild = parent;parent = (child - 1) / 2;}else{//此时不需要调整,直接breakbreak;}}
}

堆的向下调整算法

//向下调整算法
void AdjustDown(int parent)
{Compare comFunc;//仿函数int child = parent * 2 + 1;while (child < _con.size()){if (child + 1 < _con.size() && comFunc(_con[child], _con[child + 1])){//如果为真,++childchild++;}//利用仿函数建堆if (comFunc(_con[parent], _con[child])){//如果为真,交换swap(_con[parent], _con[child]);//更新child和parentparent = child;child = parent * 2 + 1;}else{//此时不需要调整,直接breakbreak;}}
}

3.3 priority_queue的模拟实现

四、容器适配器

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。

标准库中stack和queue的底层结构

本文链接:https://my.lmcjl.com/post/13280.html

展开阅读全文

4 评论

留下您的评论.