**自:
stl中的queue指單向佇列,使用時,包含標頭檔案。
關鍵要會用queue,實際上就是掌握該類的各種操作,如下:
常用函式push(e),pop(),front(),back(),size(),empty(),與棧的常用函式較為相似。
在stl中,單向佇列是以別的容器作為底層資料結構,再改變介面使之符合單向佇列的特性。下面就給出單向佇列的函式列表和vs2008中單向佇列的源**。
vs2008中queue單向佇列的源**
template >由以上可以看出,單向佇列queue封裝了別的底層資料結構(預設為deque),並改動介面以實現自身特性。class
queue
explicit queue(const _container&_cont) : c(_cont)
bool empty() const
size_type size()
const
reference front()
const_reference front()
const
reference back()
const_reference back()
const
void push(const value_type&_val)
void
pop()
const _container& _get_container() const
protected
: _container c;
//the underlying container
};
下面給出單向佇列的使用範例:
//由以上可知,stl中的單向佇列queue以deque(雙向佇列)為預設的底層資料結構,但queue的實現也可以用list(單鏈表)作為底層資料結構。單向佇列 queue支援 empty() size() front() back() push() pop()
#include
#include
#include
#include
using
namespace
std;
intmain()
//單向佇列的大小
printf("
%d %d\n
", a.size(), b.size());
//佇列頭和佇列尾
printf("
%d %d\n
", a.front(), a.back());
printf(
"%d %d\n
", b.front(), b.back());
//取單向佇列項資料並將資料移出單向佇列
while (!a.empty())
putchar('\n
');while (!b.empty())
putchar('\n
');return0;
}
ps:不可以用vector作為底層,原因在於:vector不支援pop_front()。
總之,stl中的單向佇列queue:
1、包含標頭檔案;
2、6個常用操作:size():queue中元素個數
empty():判空
front():取隊首元素
back():取隊尾元素
push(e):入隊尾
pop():刪隊首
STL系列之三 queue 單向佇列
queue單向佇列與棧有點類似,乙個是在同一端訪問資料,另乙個是在一端存入資料,另一端取出資料。單向佇列中的資料是先進先出 first in first out,fifo 在stl中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出...
STL系列之三 queue 單向佇列
queue單向佇列與棧有點類似,乙個是在同一端訪問資料,另乙個是在一端存入資料,另一端取出資料。單向佇列中的資料是先進先出 first in first out,fifo 在stl中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出...
STL系列之三 queue 單向佇列
queue單向佇列與棧有點類似,乙個是在同一端訪問資料,另乙個是在一端存入資料,另一端取出資料。單向佇列中的資料是先進先出 first in first out,fifo 在stl中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出...