1. 程式人生 > >STL容器用法總結——stack

STL容器用法總結——stack

stack堆疊容器

堆疊是一個線性表,插入和刪除只在表的一端進行。這一端稱為棧頂(Stack Top),另一端則為棧底(Stack Bottom)。堆疊的元素插入稱為入棧,元素的刪除稱為出棧。由於元素的入棧和出棧總在棧頂進行,因此,堆疊是一個後進先出(Last In First Out)表,即 LIFO 表。
C++ STL 的堆疊泛化是直接通過現有的序列容器來實現的,預設使用雙端佇列deque的資料結構,當然,可以採用其他線性結構(vector 或 list等),只要提供堆疊的入棧、出棧、棧頂元素訪問和判斷是否為空的操作即可。由於堆疊的底層使用的是其他容器,因此,堆疊可看做是一種介面卡,將一種容器轉換為另一種容器(堆疊容器)。
為了嚴格遵循堆疊的資料後進先出原則,stack 不提供元素的任何迭代器操作,因此,stack 容器也就不會向外部提供可用的前向或反向迭代器型別。
stack堆疊容器的C++標準標頭檔案為 stack ,必須用巨集語句 "#include <stack>" 包含進來,才可對 stack 堆疊的程式進行編譯。

一、建立 stack 物件
使用堆疊前,先要利用建構函式進行初始化,建立一個堆疊物件,以進行元素的入棧、出棧等操作。
1.stack()
    預設建構函式,建立一個空的 stack 物件。
    例如,下面一行程式碼使用預設的 deque 為底層容器,建立一個空的堆疊物件 s 。
    stack<int>  s;
2.stack(const stack&)
    複製建構函式,用一個 stack 堆疊建立一個新的堆疊。
    例如,下面的程式碼利用 s1 ,建立一個以雙向連結串列為底層容器的空堆疊物件 s2 。
    // stack<int, list<int> >   s1;
    stack<int, list<int> >   s2(s1);
    
二、元素入棧


stack堆疊容器的元素入棧函式為 push 函式。由於 C++ STL 的堆疊函式是不預設大小的,因此,入棧函式就不考慮堆疊空間是否為滿,均將元素壓入堆疊,從而函式沒有標明入棧成功與否的返回值。
如下是他的使用原型:
void  push(const value_type& x)
    
三、元素出棧
stack容器的元素出棧函式為 pop 函式,由於函式並沒有判斷堆疊是否為空,才進行元素的彈出,因此,需要自行判斷堆疊是否為空,才可執行 pop 函式。
void pop()
下面的示例程式碼,將堆疊的所有元素全部出棧
// stack<int>  s;
while(!s.empty())

    s.pop();// 出棧
}
    
四、取棧頂元素

stack容器的棧頂元素的讀取函式為 pop 函式,將取出最後入棧的元素,如下是它的使用原型
value_type&  top()

五、堆疊非空判斷
隨著堆疊元素不斷出棧,堆疊可能會出現空的情況,因此,一般需要呼叫 empty 函式判斷是否非空,才作元素出棧和取棧頂元素的操作。
bool  empty()
判斷堆疊是否為空,返回 true 表示堆疊已空,false 表示堆疊非空。

c++ stl棧stack介紹

C++ Stack(堆疊) 是一個容器類的改編,為程式設計師提供了堆疊的全部功能,——也就是說實現了一個先進後出(FILO)的資料結構。

c++ stl棧stack的標頭檔案為: 

#include <stack> 

c++ stl棧stack的成員函式介紹

操作比較和分配堆疊

empty() 堆疊為空則返回真

pop() 移除棧頂元素

push() 在棧頂增加元素

size() 返回棧中元素數目

top() 返回棧頂元素
--------------------- 
作者:lyj2014211626 
來源:CSDN 
原文:https://blog.csdn.net/lyj2014211626/article/details/66967761 
版權宣告:本文為博主原創文章,轉載請附上博文連結!