私はC++で要素の順序が乱れる可能性のあるもののリストを実装する予定です。私はランダムなアクセス(私はちょうど定期的にリストを掃除する必要がある)の種類を必要とすることを期待していない、と項目の順序も重要ではありません。C++イテレータの有効期間はどのくらいですか?
だから私はstd::list<Thing*> with this->position = insert(lst.end(), thing)
と思っていました。私は後で簡単に行うことができるように、各インスタンスの位置を覚えているThingクラスをお願いします。lst.erase(this->position)
一定時間で。
しかし、私はまだC++ STLコンテナに少し新しく、イテレータをこのように長い間保つのが安全かどうかはわかりません。特に、削除される前に挿入されたものの前と後に削除される他の要素があることを考えれば、
良い答えは、どのような理由でベクトルが再割り当てされるかを知るのに役立ちます。 – Malabarba
ベクトルの変更(挿入と削除の両方)はイテレータの再割り当てと無効化を許可されています。そうするかどうかは実装定義です。したがって、どのような方法でもベクトルを変更すると、既存のすべてのイテレータが常に無効になると仮定すれば、最良の結果が得られます。 – Miral