2010-06-12 31 views
0

所有的元素在插入后应该在数组中有固定的位置,直到我明确地从那里删除它们。是否有这样的提升或任何地方?谢谢动态矢量状容器,但其元素保存其索引?

+3

“固定位置”是什么意思?除非您从矢量的开始或中间插入或移除元素,否则其元素的索引不会更改。 – 2010-06-12 17:30:16

+0

手头有什么问题? – GManNickG 2010-06-12 17:33:35

+0

@詹姆斯麦克奈利斯:我的意思是说,当我插入或删除_any_元素时,这不应该影响其他人的位置。例如,如果我有一个有500个元素的容器,并且我首先移除了所有第一个499,那么最后应该是第500个,并且容器的大小不应该改变。 – szx 2010-06-12 17:35:38

回答

3

使用​​或map<int, T>

或者,使用vector<optional<T>>,并设置插槽删除对none_t,而不是实际删除它。

1

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

0

有趣。你的目标是揭示一个从整数到SLOTS的映射,那些SLOTS可能包含一个值?或者,您的目标是保留每个元素的底层地址以及内部数组本身的底层地址?大概你有一个理由,你需要元素的位置,或者在元素被“移除”之后,从整数键到元素的映射。这是什么原因?

上面提到的map<>vector<>实现可能无法工作,因为removeerasefind等操作将删除,重新排列,或检查您认为是“删除”的整数。

不幸的是,我认为这可能是一种情况,您需要使用围绕vector<optional<T> >vector<T*>的包装材料来制作自己的包装,具体取决于您如何定义remove

相关问题