2010-06-12 32 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

相關問題