棧(statck)這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的(first in last out, filo)。棧只有乙個出口,允許新增元素(只能在棧頂上增加)、移出元素(只能移出棧頂元素)、取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。因此實現非常的方便。下面就給出棧的函式列表和vs2008中棧的源**,在stl中棧一共就5個常用操作函式(top()、push()、pop()、 size()、empty() ),很好記的。
vs2008中棧的源**
[cpp]view plain
copy
//vs2008中 stack的定義 morewindows整理(
template
<
class
_ty,
class
_container = deque<_ty> >
class
stack
explicit
stack(
const
_container& _cont) : c(_cont)
bool
empty()
const
size_type size() const
reference top()
const_reference top() const
void
push(
const
value_type& _val)
void
pop()
const
_container& _get_container()
const
protected
: _container c; // the underlying container
};
可以看出,由於棧只是進一步封裝別的資料結構,並提供自己的介面,所以**非常簡潔,如果不指定容器,預設是用deque來作為其底層資料結構的(對deque不是很了解?可以參閱《stl系列之一 deque雙向佇列》)。下面給出棧的使用範例:
[cpp]view plain
copy
//棧 stack支援 empty() size() top() push() pop()
// by morewindows(
#include
#include
#include
#include
using
namespace
std;
intmain()
//棧的大小
printf("%d %d\n"
, a.size(), b.size());
//取棧項資料並將資料彈出棧
while
(!a.empty())
putchar('\n'
);
while
(!b.empty())
putchar('\n'
);
return
0;
}
原文:
STL系列之二 stack棧
棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...
STL系列之二 stack棧
棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...
STL系列之二 stack棧
棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...