我正要实现自己的类以有效地从数组中删除,但我想我会问是否已经存在类似的东西。我想要的是类似列表的访问效率,但使用数组。出于缓存一致性的原因,我想使用一个数组,因此我不必不断地调用内存分配器(就像在分配节点时使用 std::list 一样)。
我想做的是创建一个包含两个数组的类。第一个是一组元素,第二个数组是一组整数,其中每个整数是第一个数组中的一个空闲槽。因此,我可以相当容易地从数组中添加/删除元素,而无需为它们分配新内存,只需从空闲列表中获取索引并将其用于新元素即可。
这样的事情已经存在了吗?如果我自己做,我还必须制作我自己的迭代器,所以你可以迭代集合,避免数组中的任何空槽,我不太喜欢。
谢谢。
注意:我想在片场执行的操作是:
- 迭代
- 通过索引(或我想的“句柄”)随机访问单个元素
- 移除集合中任意位置的元素
- 向集合中添加元素(顺序不重要)