程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL--容器適配器(queue、priority_queue、stack)

STL--容器適配器(queue、priority_queue、stack)

編輯:C++入門知識

適配器(Adaptor)是提供接口映射的模板類。適配器基於其他類來實現新的功能,成員函數可以被添加、隱藏,也可合並以得到新的功能。 STL提供了三個容器適配器:queue、priority_queue、stack。 這些適配器都是包裝了vector、list、deque中某個順序容器的包裝器。注意:適配器沒有提供迭代器,也不能同時插入或刪除多個元素。  本文地址:http://www.cnblogs.com/archimedes/p/cpp-adapter.html,轉載請注明源地址。

隊列(queue)

先進先出(FIFO)的數據結構 可供選擇的容器只有deque和list。對大多數用途使用默認的deque。 1、要用到頭文件#include<queue> 2、常用函數

堆棧(stack)

先進後出(FILO)的數據結構 可以使用三個標准順序容器vector、deque、list中的任何一個作為stack的底層模型。 1、要用到頭文件#include<stack> 2、常用函數
<priority_queue> 內部實現: 堆 priority_queue<T, Sequence, Compare> 支持操作: push() O(logn) pop() O(logn) top() O(1)存取隊列中的第一個元素,與queue不同 See also: push_heap(), pop_heap() … in <algorithm>

priority_queue用法舉例

#include <queue><vector>
 <> maxheap;      
 ()( a, a ><,vector<>,cmp> minheap;  

priority_queue的比較函數

優先級的比較函數,可以使用缺省默認,也可以重載自己編寫的比較函數。 1) 假設優先隊列中的元素為結構體,要對其中某個變量排序。此時可以在結構體中重載操作符:
priority_queue<, vector<>, cmp> seq;                
          < ( Test &a)  seq < a.seq;     

2)如果是根據與優先隊列中某個元素相關的變量排序,且此變量不在結構體中,則可參考greater<int>() 的方式去重載(),具體做法如下:

priority_queue<, vector<>, cmp> ()( a,  b) { 
               d[a] >

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved