gpt4 book ai didi

c++ - 允许快速重用任意元素的固定长度数组数据结构? C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:48 26 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试为特定问题选择最合适的数据结构,但发现很难找到答案。

我希望创建一个小型(最多 1000 个元素)数组,其中包含整数或简单结构。在我的代码中的任何时候,我都需要从我的数组中添加和删除元素,但我不希望一直动态重新分配 ram 的开销。此外,由于我将有其他变量指向数组中的元素,所以我不想对元素重新编号/重新排序,因为这会破坏这种关系。因为我可以确定数组中元素的最大数量,所以我很乐意预先分配所有需要的 ram,但我不确定如何有效地跟踪哪些元素变得空闲,以便我可以将它们重新用于新元素需要。这类问题有明显的数据结构吗?提前致谢。

最佳答案

A std:vector<>似乎很符合您的要求:

  • 使用vector::reserve()为您计划的数组元素的最大数量分配足够的存储空间 - 请注意 reserve()实际上并没有向 vector 中添加元素。该 vector 仍将具有与调用 reserve() 之前相同数量的元素。 .但是,它确实保证 vector将元素添加到 vector 时不需要执行重新分配除非那个额外的元素会导致元素的数量超过保留。这也意味着指向 vector 的指针将保持稳定。
  • 元素保证驻留在一个连续的内存块中,元素的寻址与正常的指针算法兼容。换句话说,如果你有一个指向一个元素的指针,你可以使用普通指针算法(或数组索引)获得指向另一个元素的指针

关于c++ - 允许快速重用任意元素的固定长度数组数据结构? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com