动态矢量类容器,但其元素保存其索引?

时间:2010-06-12 17:29:06

标签: c++ containers

插入后,所有元素都应在数组中具有固定位置,直到我从那里明确删除它们。在boost还是在哪里都有这样的东西?感谢

3 个答案:

答案 0 :(得分:3)

使用unordered_map<int, T>map<int, T>

或者,使用vector< optional<T> >,并将要删除的广告位设置为none_t,而不是实际删除它。

答案 1 :(得分:1)

您希望将其值设置为null(或其他一些“无值”等效项),而不是“删除”元素。然后,一切都保持不变。

答案 2 :(得分:0)

有趣。你的目标是暴露从整数到SLOTS的映射,那些SLOTS可能包含一个值吗?或者你的目标是保留每个元素的底层地址和内部数组本身开始的底层地址?大概你有一个原因,你需要元素的位置或从整数键映射到元素被“删除”后保留的元素。那是什么原因?

上述map<>vector<>实施可能无效,因为removeerasefind等操作会移除,重新排列或检查你认为被“删除”的整数。

不幸的是,我认为这可能是您需要使用vector<optional<T> >vector<T*>周围的包装推送自己的情况,具体取决于您定义remove的方式。