C++ 容器適配器
除了順序容器外,標(biāo)準(zhǔn)庫還定義了三個順序容器適配器,stack、queue和priority_queue。適配器是標(biāo)準(zhǔn)庫中的一個通用概念。容器、迭代器和函數(shù)都有適配器。本質(zhì)上一個適配器就是一種機制,使某種事物的行為看起來像另外一種事物。

定義一個適配器
每個適配器有兩個構(gòu)造函數(shù)。
默認情況下stack和queue是基于deque實現(xiàn)的,priority_queue是再vector上實現(xiàn)的。
所有適配器都要求容器具有添加和刪除元素的能力,所以適配器不能構(gòu)造再array之上。適配器要求具有訪問尾元素的能力,所以不能用forward_list。
stack只要求push_back、pop_back和back操作,因此可以使用除array和forward_list之外的容器。
queue要求push_back、front和push_front,所以他不能基于vector構(gòu)造。
priority_queue除了front、push_back和pop_back之外還要求隨機訪問,所以不能基于list。
棧適配器
stack類定義在stack頭文件中。

intStack.push語句試圖在底層的deque對象上調(diào)用push_back,雖然stack基于deque實現(xiàn),但是我們不能直接使用deque的操作,所以stack必須用自己的操作——push
隊列適配器
queue和priority_queue定義在queue頭文件中。


默認情況下標(biāo)準(zhǔn)庫在元素類型上使用<運算符來確定相對優(yōu)先級,我們將在后面學(xué)習(xí)如何重載這個默認設(shè)置。