私はポインタがあるベクトルコンテナを削除する場所が多いので、まずすべてのポインタを削除してからコンテナをクリアする必要があります。毎回反復してポインタを手動で削除するたびに(私はstl :: algorithms for_eachを認識しています)。すべてのコードを回避するために、ポインタを持つすべてのベクターコンテナを削除するためのテンプレートを作成しました。ここまでは順調ですね。テンプレートを使用して任意のコンテナを削除する
ここでは、マップ、コンカレントコンテナなどを含むいくつかのコンテナタイプがあります。すべてが同じ機能を持ち、削除が行われる限りです。私が持っているDeleteContainer(std::vector<T*>& VecIn)
の機能は、上記のようにベクトルでしか動かすことができません。すべてのコンテナで動作するように汎用化する方法はありますか?
編集:すべての答えのためのおかげで、私は私は1つ以上を選択することができることを望みます。この質問につまずいた人には、選択されたものだけでなくすべての答えを読んでください。すべてが素晴らしい情報を提供します。
これはあまりC++ ishではありません。 Deleterを手動で呼び出すときに、コンテナは例外として安全ではありません。コンテナがスコープから外れると、RAIIが実際に関数を自動的に呼び出すように、abオブジェクトにコンテナをラップする必要があります。 –
他の回答と同じコメントですが、関連するコンテナを別に処理する必要があります。 – Nim