STL容器之stack棧

2021-07-27 04:57:26 字數 1646 閱讀 7219

棧(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不允許有遍歷行為。有元素推入棧的操作稱為 ...