次の操作をサポートして維持するアイテム(一部のオブジェクト)のリストが必要です。
- 最後に挿入
- 任意の位置からの削除
STLリストは正しい選択のようです。しかし、どうすれば2番目の操作を一定時間で行うことができますか?各ノードへのポインタをどこかに保存して直接削除することもできますが、eraseはイテレータを使用するため、機能しません。
使用例:
items = list<myobj>..
items.push_back(obj1)
items.push_back(obj2)
items.push_back(obj3)
items.remove(obj2) // <- How to do this in constant time.
push_backがどういうわけかノードへのアクセスを与えた場合、私は使用できたでしょう:
map[obj1] = items.push_back(obj1)
items.remove(map[obj1])
1つのオプションは、マップでイテレータを使用することです。もっと簡単な方法はありますか?