如何建立自訂 STL 容器
設計行為類似於 STL 容器的新容器時,存在一些準則來確保相容性。
模板和類型定義
容器應聲明為具有適當類型的通用模板類定義:
-
typedef定義:
- 分配器型別
- 值型別
- 引用型別
- 指標類型
- 區別type
- 大小類型
-
類別聲明:
有適當迭代器類別的迭代器類型(例如std::random_access_iterator_tag )
常數迭代器類型
迭代器-
迭代器應提供:
引用類型-
指針類型
複製建構子- 析構函數
-
- 賦值運算子
- 比較運算子
- 自增和自減運算符(可選)
- 加法和減法運算子(可選)
隨機存取運算子(例如運算子[()])(可選)
取消引用運算子(運算符*()和運算符->())
- 容器類別容器類別應該包括:
複製建構子- 析構函式
-
- 作業運算子
- 比較運算子(選用)
-
開始與結束迭代器
反向迭代器(選用)-
- 元素存取函數:
- 前()與後() (可選)
- push_front() 和push_back() (可選)
pop_front() 和pop_back() (可選)-
operator[]() (可選)
-
- 插入和刪除函數:
- emplace()(可選)
- insert()(可選)
erase()(可選)-
clear() (可選)
assign()(可選)-
swap()(可選)
max_size()-
empty()
分配器存取函數🎜> get_allocator() (可選)
測試為了確保容器正常運行,請使用帶有哨兵物件(如測試器)的測試工具來驗證其行為。該工具可以檢查記憶體洩漏和資源管理問題。
以上是如何設計和實作符合 STL 的自訂容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!