簡體   English   中英

在C ++中,如何釋放向量中幾個元素的內存,而對其他元素仍具有相同的索引

[英]In c++, how to free memory of few elements in a vector and still have the same indexing for other elements

我實際上想通過向量中存儲的值對向量中的元素進行索引,以便輕松檢索而不是進行搜索。 因此,我既不希望矢量更改其長度,也不希望其他元素更改其索引。 可以通過向量實現,還是可以使用其他數據結構?

在C ++中,如何釋放向量中幾個元素的內存,而對其他元素仍具有相同的索引

不,你不能。 C ++強制std::vector<T>將其元素放置在連續的內存中。 您無法為“中間”的元素釋放內存。

您可以使用std::unordered_map<int, T> 這樣,您仍然擁有相同的索引,而您可以釋放其他索引。 但是, std::unordered_map的性能可能與std::vector不同,因為它們是完全不同的數據結構。

但是,您應該使用std::unordered_map::find(...)來獲取索引,而不是其operator []這樣就可以在索引不存在的情況下不重新插入默認元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM