在stl中定義了三種容器介面卡:queue,priority_queue,和stack。
容器介面卡是利用基本容器(如之前介紹的deque,vector,list)作為自己的底層容器,適配它以實現自己特定功能的容器。
容器介面卡有乙個共同的特點:都不支援迭代器(iterator)。
特點:fifo(先進先出)原則。
模板定義
t是指儲存的資料型別template
> class
queue
container是指用於儲存queue的容器型別,預設的容器是deque,還可以使用list作為queue的底層容器,但不能使用vector作為其的底層容器,因為vector不支援pop_front()函式。
queue的建構函式:
此建構函式建立空的queue。explicit
queue(const container &cnt = container())
queue的標頭檔案是:
#include
queue成員函式
value_type &back();
const value_type &back() const
返回queue中最後乙個元素
bool empty() const
如果呼叫queue為空則返回true,否則返回false
value_type &front();
const value_type &front() const
返回queue中第乙個元素
void pop()
刪除queue中第乙個元素
void push(const t &val)
將值為val的元素加到queue的尾部
size_type size() const
返回queue中當前元素個數
特點:按優先順序來排序queue中的元素queue
q;q.push(1);
q.push(2);
q.push(3);
q.push(4);
if (!q.empty())
cout
<<"back() = "
<" ; front() = "
<"\n";
q.pop();
cout
<<"after pop, size() = "
<"\n";
q.push(5);
cout
<<"after push(), size() = "
<"\n";
cout
<<"contents of queue: ";
for (int i=0;icout
<" ";
q.push(q.front());
q.pop();
}
類模板
t指儲存的資料型別template
, class comp = less> class priority_queue
container是儲存priority queue的容器型別,預設是vector,底層容器必須支援隨機訪問迭代器,因此底層容器可以是deque,不能是list。
comp指priority queue中元素的比較函式
priority_queue介面卡有以下建構函式
第乙個建構函式建立空的priority_queueexplicit priority_queue(const comp &cmpfn = comp(),container &cnt = container());
templatepriority_queue(initer start,initer end,const comp &cmpfn = comp(),container &cnt = container())
第二個建構函式建立由start和end指定範圍的priority queue。
priority_queue標頭檔案:
#include
priority_queue成員函式
bool empty()
如果呼叫priority_queue為空,返回true,否則返回false
void pop()
刪除priority_queue中第乙個元素
void push(const t &val)
將元素新增到priority_queue佇列中
size_type size() const
返回priority_queue中當前元素個數
const value_type &top() const
返回priority_queue中優先順序最高的元素,不刪除元素
example
特點:後進先出。#include
#include
using
namespace
std;
int _tmain(int argc, _tchar* argv)
return
1;}
類模板:
t是儲存的資料型別template
> class
stack
container指底層的容器型別,預設是deque,還可以使用vector,list作為其的底層容器。
stack介面卡的建構函式:
建立空的stackexplicit
stack(const container &cnt = container())
標頭檔案是:
#include
stack成員函式
bool empty() const
如果stack為空返回true,否則返回false
void pop()
刪除stack棧頂元素,也是容器中最後新增的元素
void push(const t &val)
將元素壓進堆疊,也就是棧頂元素
size_type size() const
返回當前棧內元素個數
value_type &top();
const value_type &top() const
返回棧頂元素的引用,不會刪除棧頂元素
code example
stack
s;s.push('a');
s.push('b');
s.push('c');
s.push('d');
while (!s.empty())
STL 容器介面卡
那麼c 中的容器介面卡是幹什麼的呢?可以做乙個模擬,我們已有的容器 比如vector list deque 就是裝置,這個裝置支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器...
STL容器介面卡
stl學習系列之六 容器介面卡 stl提供了三種容器介面卡 stack,queue,priority queue。介面卡並不是第一類容器,因為它們並沒有提供與元素的儲存形式有關的真正資料結構實現,並且介面卡不支援迭代器。介面卡的優點是 能夠使程式設計師選擇一種合適的底層資料結構。這三個介面卡類都提供...
STL容器介面卡
首先,我們要明白介面卡是幹什麼的?其實就是乙個介面轉換裝置,是得我們能用特定的方法去操作一些我們本來無法操作的東西。舉乙個例子,比如你的乙個裝置支援串列埠線,而你的電腦支援的是usb口,這時候,我們沒有必要重新買乙個支援usb的裝置,只需要一根串列埠轉usb口的小玩意,讓你的裝置能夠連線到usb插口...