容器適配器通常是讓一種已存在的容器類型採用另一種不同的抽象類型的工作方式實現,一般情況下,它的初始化需要傳遞一個容器作爲參數,而它所有的操作也是在這個容器上實現的。標準庫提供了三種順序容器適配器:stack、queue、priority_queue,使用它們時需要包含#include<stack>和#include <queue>頭文件,另外容器適配器支持關係運算。
容器適配器的初始化:
默認構造函數,用於創建空對象,採用默認的順序容器實現該適配器,A a,stack<int> intStack
帶一個參數的構造函數,將參數容器的副本作爲實現該適配器的基礎值,A a(c),deque<int> deq; stack<int> stk(deq)
容器適配器默認採用哪種順序容器實現:
stack、queue: 採用deque實現,priority_queue:採用vector實現。
容器適配器可以有哪些順序容器實現:
stack:所關聯的的基礎容器可以是任意一種順序容器,vector、list、deque
queue:必須提供push_front操作,只能建立在list和deque容器之上
priority_queue:要求必須提供隨機訪問功能,因此只能建立在vector和deque容器之上
適配器通用的類型:size_type、value_type、container_type(基礎容器類型)
棧適配器:按照後進先出原則操作的一種數據結構,它支持的操作有,empty()、size()、pop()、push(item)、top(),五種操作
隊列適配器:按照先進先出原則操作的一種數據結構,它支持的操作有,empty()、size()、pop()、push(item)、front()、back(),六種操作
優先級隊列:允許用戶爲隊列中存儲的元素設置優先級,該隊列不是將新增元素放在隊尾而是將它放在比他優先級低的元素的前面,默認使用 < 操作符來確定它們之間的優先級關係。它支持的操作有,empty()、size()、pop()、push()、top(),五種操作