在 C++ 中,std::stack 是一個(gè)容器適配器,它是在另一個(gè) STL 容器的基礎(chǔ)上提供了一組棧(后進(jìn)先出)操作。下面是使用 std::stack 的幾個(gè)常見用法。
創(chuàng)建一個(gè)空的 stack:
std::stack<int> myStack;
這將創(chuàng)建一個(gè)空的 std::stack 對(duì)象 myStack,其中 int 是堆棧中元素的數(shù)據(jù)類型。
向 stack 中添加元素:
你可以使用 push() 函數(shù)將元素推入棧中,如下所示:
myStack.push(1);
這將向 myStack 中添加一個(gè)值為 1 的元素。可以多次使用 push() 來(lái)添加更多的元素到棧中。
彈出棧頂元素:
使用 std::stack 的 pop() 函數(shù)將從棧頂彈出一個(gè)元素,如下所示:
myStack.pop();
這將從棧頂彈出一個(gè)元素。
訪問棧頂元素:
使用 top() 函數(shù)返回位于棧頂?shù)脑兀缦滤荆?/p>
int topElement = myStack.top();
如果棧是空的,則 top() 函數(shù)將導(dǎo)致未定義行為。
判斷棧是否為空:
std::stack 的 empty() 函數(shù)返回一個(gè)布爾值,表示棧是否為空,如下所示:
bool isEmpty = myStack.empty();
獲取棧的大小:
std::stack 的 size() 函數(shù)將返回棧中元素的個(gè)數(shù),如下所示:
int stackSize = myStack.size();
復(fù)制棧:
您可以使用等號(hào)運(yùn)算符 = 復(fù)制一個(gè)棧,復(fù)制得到的棧將包含與原始棧相同的元素,如下所示:
std::stack<int> myStackCopy = myStack;
這將創(chuàng)建一個(gè)新的 std::stack 對(duì)象 myStackCopy,其中包含與 myStack 相同的元素。
以上便是 std::stack 的幾個(gè)常見用法。注意,std::stack 使用默認(rèn)分配器來(lái)管理內(nèi)存,也可以通過傳遞一個(gè)自定義分配器模板參數(shù)來(lái)指定自定義分配器。