カスタム STL コンテナを作成するためのガイドライン
STL 規則に準拠した新しいコンテナを設計するときは、特定のガイドラインに従うことが重要です適切な動作と STL ライブラリとの統合を確保するため。
Iteratorインターフェイス:
- input_iterator_tag、output_iterator_tag、forward_iterator_tag、bidirection_iterator_tag、random_access_iterator_tag などの適切な iterator_category タグを使用してイテレータ クラスを定義します。
- 比較用のメンバー関数を提供します (= =、!=)、インクリメント/デクリメント ( 、 --)、算術 ( 、 -) および逆参照 (*、 ->) 操作。
Const Iterator:
- Const Iterator クラス内にネストされた const_iterator クラスを提供します。イテレータ クラス。定数コンテナの反復を可能にします。
- 同じメンバー関数を定義します。非 const イテレータですが、const 参照とポインタを持ちます。
比較と代入:
- 比較演算子 (==、!=、 、=) をコンテナー自体に使用します。
- 別のコンテナーへの参照を取得する代入演算子を提供します。 container.
容量とアクセス:
- コンテナのサイズを管理するための 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() メンバーを提供します内の要素を挿入および削除する関数container.
その他:
- 同じタイプの 2 つのコンテナーの内容を交換する swap() メンバー関数を組み込みます。
- get_allocator() を実装して、コンテナに関連付けられたアロケータを取得します。
- 独立型のアロケータを定義します。同じタイプのコンテナを交換するための swap() 関数。
テスト:
コンテナの信頼性を確保するには、提供されているようなテスト クラスを使用します。
- オブジェクトの有効期間が適切に管理されていることを確認するテスター クラス。
- 関数呼び出しは、オブジェクトの状態が予期せぬものです。
- コンテナは、グローバル オブジェクトを使用して作成しても使用せずに作成しても、正しく機能します。