編寫自訂STL 容器的指南
設計符合STL 約定的新容器時,遵循某些指南至關重要以確保其正確行為並與STL 庫整合。
迭代器介面:
- 使用適當的iterator_category標籤定義迭代器類,例如input_iterator_tag、output_iterator_tag、forward_itator_bator_bators、tag且tag。
- 提供用於比較的成員函數(= =, !=), 遞增/遞減 ( , --)、算術 ( , -) 和解引用 (*, ->) 運算。
常數迭代器:
- 提供嵌套在迭代器類中的 const_iterator 類,允許對常數進行迭代容器。
- 定義與非常量迭代器相同的成員函數,但使用 const 引用和指標。
比較與賦值:
- 實作比較運算子(==、!=、、=) 容器本身。
- 提供一個引用另一個容器的賦值運算子。
容量和存取:
- 包含empty()、size()、max_size()等成員函數來管理容器大小和容量。
- 提供 begin()、end()、cbegin()、cend()、rbegin()、rend()、crbegin() 和 crend() 用於存取表示容器元素的迭代器。
- 定義front()、back()、at()、operator[] 等函數來存取或修改
插入和刪除:
- 實現emplace_front()、emplace_back()、push_front()、push_back()、pop_front()和pop_back() 用於元素插入和
- 提供emplace()、insert() 和Erase() 成員函數,用於在容器內插入和刪除元素。
其他:
- 包含一個 swap() 成員函數來交換相同容器的兩個容器的內容類型。
- 實作 get_allocator() 來擷取與容器關聯的分配器。
- 定義一個獨立的 swap() 函數,用來交換相同類型的容器。
測試:
確保您的可靠性容器,使用類似提供的測試器類的測試類來驗證:
- 物件生命週期已正確管理。
- 函數呼叫不會意外修改物件的狀態。
- 在使用或不使用全域物件建立時,容器都能正確運作。
以上是如何設計與標準庫正確整合的自訂 STL 容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!