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
版權宣告:本文為博主原創文章,轉載請附上博文連結!