close

因為 stack 的後進先出原則,你只能看到最上面 top 的元素是什麼,之前推 push 進去的元素無法去遍歷查看的。

  • stk.push(x);
  • stk.pop();
  • x = stk.top();
  • stk.empty()
  • stk.size()
#include <iosstream>
#include <stack>
using namespace std;
int main(){
	stack <int> stk ;
}

將元素放入 stack 頂端

std::stack<int> mystack;
mystack.push(1);
mystack.push(2);
mystack.push(3);
std::cout << mystack.size() << "\n"; // 3

從vector變成stack

std::vector<int> myvector = {4, 5};
std::stack<int, std::vector<int>> mystack2(myvector);
std::cout << mystack2.size() << "\n"; // 2

從deque變成stack

std::deque<int> mydeque = {6, 7, 8};
std::stack<int, std::deque<int>> mystack3(mydeque);
std::cout << mystack3.size() << "\n"; // 3

判斷 stack 是否為空 empty()

std::stack<int> mystack;
if (mystack.empty())
    std::cout << "empty\n";
else
    std::cout << "not empty\n";

mystack.push(1);

if (mystack.empty())
    std::cout << "empty\n";
else
    std::cout << "not empty\n";

從 stack 頂端移出元素

std::stack<int> mystack;
mystack.push(1);
mystack.push(2);
std::cout << mystack.size() << "\n"; // 2
if (!mystack.empty()) mystack.pop();
if (!mystack.empty()) mystack.pop();
std::cout << mystack.size() << "\n"; // 0
if (!mystack.empty()) mystack.pop();

取得 stack 裡的元素數量

std::stack<char> mystack;
std::cout << mystack.size() << "\n";//0
mystack.push('a');
std::cout << mystack.size() << "\n";//1
mystack.push('b');
std::cout << mystack.size() << "\n";//2

stack 查看最頂端的元素top()

std::stack<int> mystack;
// std::cout << mystack.top() << "\n"; // Segmentation fault
if (!mystack.empty())
    std::cout << mystack.top() << "\n";
mystack.push(1);
mystack.push(2);
mystack.push(3);
if (!mystack.empty())
    std::cout << mystack.top() << "\n"; // 3

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow
    文章標籤
    C++
    全站熱搜
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()