目录
一、 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 评论