繁体   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