首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 從零手寫順序棧:模板實現、動態擴容與深拷貝詳解

     編輯:關於C++

順序棧的數據結構定義

使用動態數組作為底層存儲,支援任意類型元素。核心字段:

  • T* _array:元素數組指針
  • size_t _capacity:當前分配容量
  • int _topIndex:棧頂索引(-1 表示空)

完整模板類實現

 -1) {
            cout << _array[_topIndex] << endl;
            --_topIndex;
        }
    }

    bool empty() const { return _topIndex == -1; }
};

關鍵技術點解析

技術點實現細節
動態擴容策略_capacity = 2 * _capacity + 3,均攤 O(1)
深拷貝 vs 淺拷貝POD 類型可 memcpy;通用模板必須逐元素拷貝構造
異常安全先分配新空間、拷貝成功後再釋放舊空間,防止內存洩漏
析構函數釋放數組內存,避免洩漏

測試用例

 s;
    s.Push(1); s.Push(2); s.Push(3); s.Push(4);
    s.Pop();  // 4
    s.Pop();  // 3
    s.Pop();  // 2
    s.Pop();  // 1
}
int main() { test1(); return 0; }

擴展建議

  • 添加 Top()、Size()、Clear() 等常用接口。
  • 實現拷貝構造函數、移動語義、std::initializer_list 構造。
  • 對比 std::vector 作為底層容器的實現(更簡潔、安全)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved