我想将<Object A, Relation R, Object B>
类型的不同关系存储在一个集合或多个集合中(约100到1000个)。我希望能够搜索A
和(A,R)
,但不会为(A,R,B)
(并且将只有少数(< 5)与A
和R
相同的关系,所以线性搜索如果罚款那么)。Set与Multiset
是更好地存储在一个集中的关系(由A
,R
和B
订购)或将它们存储在由A
和R
订购了多集?我已经研究了哈希表,但是他们的迭代没有(有序)集迭代那么快,并且模式匹配也需要很多迭代。 (这将不得不寻找曾经找迭代开始,然后重复,直到与同一对象的所有关系都做了。)
感谢, 拉格纳
如何将它们存储在向量中?对于1000个元素,我的钱就是最快的实现。 –
程序会经常搜索集合/向量,因为它必须在不同的关系上进行大量的模式匹配(程序是一个几何问题求解器,它必须找到它可以应用某个定理的情况) – Ragnar
@Ragnar:问题并不在于搜索的频率如何,而是当地图的复杂结构与矢量的简单结构相得益彰时。它在支付使用地图之前的元素数量往往远高于人们的预期。 –