棧(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;
}
關閉
C 中STL容器之棧 stack
1.棧 stack 基本介紹 棧是限定在僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂 top 表頭端稱為 棧底 bottom 一般的棧如下圖所示,它的特點可用圖3.1 b 所示的鐵路排程站形象地表示 2.棧的基本用法 2.1 棧的定義方式 stacks 引數也是資料型別,這是棧的定義方式 st...
STL特殊容器之stack
stack是一種先進後出 filo 的資料結構,它只有乙個出口。stack允許新增元素 移除元素 取得棧頂元素,除了棧頂元素,取不到其他元素,即棧不允許遍歷,也不提供迭代器。deque作為stack的底層容器,可以輕易的形成乙個stack。因此,sgi stl以deque作為預設情況下的stack的...
STL常用容器 4 stack棧容器
4 案例 stack是一種先進後出 first in last out,filo 的資料結構,它只有乙個出口,形式如圖所示。stack容器允許新增元素,移除元素,取得棧頂元素,但是除了最頂端外,沒有任何其他方法可以訪問stack的其他元素。換言之,stack不允許有遍歷行為。有元素推入棧的操作稱為 ...