我需要维护一个项目列表(一些对象),并支持以下操作:
- 最后插入
- 从任何位置删除
STL 列表似乎是正确的选择。但是,我怎样才能在恒定时间内进行第二次操作?我可以将指向每个节点的指针保存在某处并直接删除它们,但是擦除需要一个迭代器,所以这不起作用。
示例用法:
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])
一种选择是在地图中使用迭代器,有没有更简单的方法?