• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

C++ 程式語言 std::stack 堆疊用法教學與範例

介紹 C++ 標準函式庫所提供的堆疊(stack)功能用法,並提供基本的使用範例。

使用 C++ 堆疊

堆疊(stack)是一種後進先出(LIFO, Last In First Out)的資料結構,在 C++ 中若要使用堆疊,可以運用 C++ 標準函式庫(STL)所提供的 stack,以下是基本的使用範例:

#include <iostream>
#include <stack>  // 引入堆疊>標頭檔
int main() {
  std::stack<int> myStack;  // 建立堆疊

  for (int i = 0; i < 5; ++i) {
    myStack.push(i);  // 放入元素
  }

  // 傳回最上方的元素
  std::cout << "Top: " << myStack.top() << std::endl;

  // 移除最上方的元素
  myStack.pop();

  // 傳回最上方的元素
  std::cout << "Top: " << myStack.top() << std::endl;

  return 0;
}
Top: 4
Top: 3

取得堆疊內元素個數

若要取得堆疊內的元素個數,可以使用 size 函數:

#include <iostream>
#include <stack>
int main() {
  std::stack<int> myStack;
  for (int i = 0; i < 5; ++i) {
    myStack.push(i);
  }

  // 取得堆疊內元素個數
  std::cout << "Count: " << myStack.size() << std::endl;

  return 0;
}
Count: 5

檢查堆疊是否有元素(是否為空)

若要檢查堆疊內是否有任何元素,可以使用 empty 函數:

#include <iostream>
#include <stack>
int main() {
  std::stack<int> myStack;
  for (int i = 0; i < 5; ++i) {
    myStack.push(i);
  }

  // 檢查堆疊是否有元素(是否為空)
  if (myStack.empty()) {
    std::cout << "堆疊是空的。" << std::endl;
  } else {
    std::cout << "堆疊不是空的。" << std::endl;
  }

  return 0;
}
堆疊不是空的。

堆疊內容互換

若要將兩個堆疊的內容互換,可以使用 swap 函數:

#include <iostream>
#include <stack>
int main() {
  std::stack<int> myStack1, myStack2;
  for (int i = 0; i < 5; ++i) { myStack1.push(i); }
  for (int i = 10; i < 13; ++i) { myStack2.push(i); }

  // 將兩個堆疊內容互換
  myStack1.swap(myStack2);

  // 輸出 myStack1
  std::cout << "myStack1 = ";
  while (!myStack1.empty()) {
    std::cout << myStack1.top() << " ";
    myStack1.pop();
  }
  std::cout << std::endl;

  // 輸出 myStack2
  std::cout << "myStack2 = ";
  while (!myStack2.empty()) {
    std::cout << myStack2.top() << " ";
    myStack2.pop();
  }
  std::cout << std::endl;

  return 0;
}
myStack1 = 12 11 10
myStack2 = 4 3 2 1 0

這個範例一開始建立了 myStack1 與 myStack2 兩個堆疊,然後使用 swap 函數將兩個堆疊中的內容互換。

參考資料:Tutorialspoint

分類:C/C++

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide