(1)STL中stack的实现是以deque为底层容器而进行修改实现的,所以,stack通常称为容器适配器(adapter)(修改某物接口,造成另外一种风貌的模式为适配器模式)。除了deque做为底层容器外,list也能够做为stack的底层实现容器,用法为stack<int,list<int>> istack; (2)stack没有迭代器(只能知足先进后出的性质,因此不须要迭代器)算法
同stack数组
(1)隐式表示法:用数组表示树结构,如彻底二叉树能够由数组来表示 (2)heap实质是一种知足某种限制条件的彻底二叉树,分为大根堆和小根堆两种。 (3)heap的实现主要是用vector(用于二叉树的隐式表示)和一组heap算法来实现 (4)STL中的heap是以数组形式的max-heap实现的 (5)max-heap的性质(以数组标示):数组第一个元素预留出来不用,数据从i下标开始存储,则知足a[i] > a[2i] && a[i] > a[2i+1]spa
(1)push_heap算法:插入数组底部,而后循环和父节点比较,调整max-heap结构。 (2)pop-heap算法
blog
(3)sort-heap算法(堆排序)、make-heap算法 图省略,参考堆排序思路。排序
(1)定义及操做:优先队列是一个拥有权值观念的queue,容许像queue同样,即只容许低端加入,顶端取出操做;因为其带有权值,因此里面的元素自动以权值大小进行排序,权值高的,排在前面。 (2)priority_queue的底层容器为vector+heap操做(默认状况),也能够说是以max-heap为底层容器接口