是否有任何关键容器按键和值排序?我想在C ++中使用这个数据结构。在Java中,有方法containsKey
和containsValue
。在最短的时间内,我需要两种方式(containsKey
和containsValue
)的关联数据结构的迭代器。它必须几乎接近log(n)。
答案 0 :(得分:1)
您所描述的内容听起来很像Boost.Bimap容器框架,它允许您构建双向映射,让您可以同等有效地查找键和值。这可能不是您正在寻找的,但该库经过了充分测试,可能是一个很好的起点。
希望这有帮助!
答案 1 :(得分:0)
可能您想要给定T2的所有T1,反之亦然。这不完全是你所说的,但如果这就是你想要的那样,那么就应该开始改进.bimap。
std :: set< std :: pair< Tkey,Tvalue> >会以一种基本的方式做你想做的事。辅助std :: set< Tkey>和std :: set< Tvalue>在O(log(n))中给出全局contains_key和contains_value,如果这是你想要的。
std :: map< Tkey,std :: set< Tvalue> >为您提供方便的O(log(n))访问键值的方便。维护反向副本为您提供方便的O(log(n))访问键的键。
这实际上取决于你想做什么,以及数据是一组任意的键,值对还是以某种方式限制。