设置允许双索引的容器的最佳方法是什么(在 C++ 中)?具体来说,我有一个对象列表,每个对象都由一个键索引(每个键可能多个)。这意味着一个多图。然而,这样做的问题在于,它意味着查找对象位置的方法可能比线性查找更糟糕。我宁愿避免重复数据,所以让每个对象保持它自己的坐标并且必须在地图中移动自己会很糟糕(更不用说移动你自己的对象可能会在成员函数中间接调用你的析构函数!)。我宁愿一些容器通过对象指针和坐标维护索引,并且对象本身保证稳定的引用/指针。然后每个对象可以存储一个迭代器到索引(包括坐标),充分抽象,并知道它在哪里。Boost.MultiIndex 似乎是最好的主意,但它非常可怕,我不希望我的实际对象需要是 const。
你会推荐什么?
编辑:Boost Bimap 看起来不错,但它提供稳定的索引吗?也就是说,如果我更改坐标,对其他元素的引用必须保持有效。我想使用指针进行索引的原因是因为对象没有内在的顺序,并且指针可以在对象更改时保持不变(允许它在 Boost MultiIndex 中使用,IIRC 确实提供了稳定的索引)。