對於容器介面卡,它和順序容器到底有什麼區別?看了一晚上的書,似懂非懂,後來理清了一下思路:
介面卡:adapter,其原意是插座,介面卡,接合器的意思。假如說現在在編寫程式中需要乙個棧結構,可以用deque來模擬,然而deque
畢竟不能直接作為乙個stack,它並不能直接嚴格滿足要求,因為我們不能防止別人在另一端亂動我的東西,(因為deque是一種順序容器,其為雙端佇列)
然而我們所需要的棧結構是一種順序容器介面卡,該佇列保證只在隊尾插入新元素,而且只能在隊首刪除元素。那這個
時候我們需要對它進行一些包裝,作出一定的限制以滿足我們所需要的棧結構的要求。我們使之只能
在一端進行插入和刪除。也就是說我必須提供乙個"插座",這個「插座」一端插在deque上,另一端插在我的程式中,那麼
現在我就可以使用棧結構了。而stack就是這個的「插座」,它連線了deque和我的程式。表面上看我使用的是stack,
實際上我是通過stack這個「插座」來使用deque(因為stack完全是用deque來實現的,但是它並沒有任何其他的東西,它只是在的確上面
作了一層包裝,相當於乙個「插座」的功能)。因此,stack,queue,priority_queue這樣的類一般稱為容器介面卡,他們只是基本
容器型別(vector,dequeue,list)的適配
實際上,這也是介面卡模式的基本思想:將乙個類的介面轉換為客戶希望的另乙個介面。adapter模式使得
原本由於介面不相容而不能一起工作的那些類可以一起工作。也就是說,在乙個類的介面上提供乙個「插座」類,使它變成我希望使用的介面。
容器介面卡(棧容器介面卡 佇列容器介面卡)
我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...
C 容器介面卡的理解
介面卡是一種設計模式 設計模式是一套被反覆使用的 多數人知曉的 經過分類編目的 設計經驗的總結 該模式是將乙個類的介面轉換成客戶希望的另外乙個介面。雖然stack queue priority queue中也可以存放元素,但在stl中並沒有將其劃分在容器的行列,而是將其稱為容器介面卡,這是因為每個容...
容器介面卡
容器介面卡通常是讓一種已存在的容器型別採用另一種不同的抽象型別的工作方式實現,一般情況下,它的初始化需要傳遞乙個容器作為引數,而它所有的操作也是在這個容器上實現的。標準庫提供了三種順序容器介面卡 stack queue priority queue,使用它們時需要包含 include 和 inclu...