queue單向佇列與棧有點類似,乙個是在同一端訪問資料,另乙個是在一端存入資料,另一端取出資料。單向佇列中的資料是先進先出(first in first out,fifo)。在stl中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出單向佇列的函式列表和vs2008中單向佇列的源**。單向佇列一共6個常用函式(front()、back()、push()、pop()、empty()、size()),與棧的常用函式較為相似。
vs2008中queue單向佇列的源**
[cpp]view plain
copy
"font-size:18px;"
>
//vs2008中 queue的定義 morewindows整理(
template
<
class
_ty,
class
_container = deque<_ty> >
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};
可以看出,由於queue只是進一步封裝別的資料結構,並提供自己的介面,所以**非常簡潔,如果不指定容器,預設是用deque來作為其底層資料結構的(對deque不是很了解?可以參閱
《stl系列之一deque雙向佇列》
)。下面給出單向佇列的使用範例:
[cpp]view plain
copy
//單向佇列 queue支援 empty() size() front() back() push() pop()
//by morewindows(
#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'
);
return
0;
}
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中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出...