我正在寻找满足我以下需求的 C++ 容器:
- 我需要按索引删除元素。
- 在我删除一个元素后,我将在前面插入另一个元素(总是!!!!!!)
- 除此之外,尺寸没有变化。
- 它需要被索引。
- 存储在容器中的值是唯一的,作为索引。
- 一个索引应该分配给一个值。除非我删除或添加一个值。然后应该调整索引。
对于另一组与该容器并行工作的数据,我需要一个具有这些功能和这些附加功能的数据:
- 这需要在两个方向上工作:由于它存储一个唯一值,我需要能够非常快速地通过实际值(100% 唯一)访问索引,因为这种情况会发生很多次。
我不能授权,任何值类型都支持运算符,<
如<=
==
!=
如果有问题,请继续提问。如果有不清楚的地方,我会进一步解释。
编辑:
既然我被要求,这背后的实际问题就来了:
我正在编写一个由模板容器类组成的库,它能够存储一定数量的对象。所有这些对象都是同一类型。(嗯,当然......)这些对象的另一个非常重要的属性必须是,它们可以通过唯一索引重新创建。这个索引也可以是任何东西。在这种情况下,一个示例是二维空间,您可以在其中创建平面上的对象,并且可以通过为对象类提供坐标来重新创建所有属性(在这种情况下作为单个对象)。现在,当容器达到最大容量时,它会删除最后使用的对象。我的想法是在这里,你给容器唯一的索引。如果仍存储所需的对象,则该函数返回对象上的指针并将其在内部容器内移动到前面。
我需要这个,因为我有一个程序可以轻松使用我所有的 RAM 甚至更多。好吧,我每次都可以生成和销毁对象,但这对我来说似乎是在浪费计算能力。所以我想出了这个只删除对象的容器,如果它没有被使用很长时间的话。这在我的特殊情况下非常有用(在巨大的地图上寻找路径)
我希望这会有所帮助!
编辑2:
好的。我要更清楚地说明这一点。
让我们从一个简单的数据缓存开始:
[0] d1 [1] d2 [2] d3 [3] d4
现在假设我使用了 d3。结构现在应该如下所示:
[0] d3 [1] d1 [2] d2 [3] d4
现在我向容器 (d5) 添加一个全新的元素。
[0] d5 [1] d3 [2] d1 [3] d2
这就是背后的想法。现在代替int
-values 作为索引,我允许有一个自定义索引类,它能够恢复每个可能被删除的对象(这不是问题。只是我的类工作的要求)。
让我们从开头的陈述开始。第一种情况看起来像这样:
[0] i1 [1] i2 [2] i3 [3] i4
[i1] 0 [i2] 1 [i3] 2 [i4] 3
第二个示例如下所示:
[0] i3 [1] i1 [2] i2 [3] i4
[i1] 1 [i2] 2 [i3] 0 [i4] 3
最后最后一个状态是这样的:
[0] i5 [1] i3 [2] i1 [3] i2
[i1] 2 [i2] 3 [i3] 1 [i5] 0
我希望这更清楚。对于第二个,可能有多个容器。