ファクトリ メソッドが呼び出されるたびにポインターstd::list<Value>
を配布する、管理構造に属する があります。これらのポインターは、破棄する必要があるValue *
ときにマネージャーに戻されます。Value
ただし、これらのポインターを使用して要素を見つけて消去/削除する方法がわかりません。
class ValueManager{
public:
Value * createValue(ValueDef & def) {
m_valueList.push_back( Value( def ) );
return &m_valueList.back();
}
void destroyValue(Value * target) {
// Mystery!
// How does one remove/erase a list element
// with only a pointer to it's value?
}
private:
std::list<Value> m_valueList;
};
と の両方がタスクに適合していないよう::erase
に::remove
見えます。1 つはポインターの代わりにイテレーターを使用し、後者は値全体を使用しますValues
。ポインターを確実に使用してターゲットを見つけることができます。
私の質問は、最も効率的な実装は何destroyValue()
ですか?