0

我需要描述一个要在其中搜索的关联数组,您可以使用键和值。使用函数 add、delete、getBy1st(按键搜索)、getBy2nd(按值搜索)。例如在 C++ 中:

symmap<std::string, int> m;  
m.insert(make_pair<std::string,int> ("hello", 1));
m.insert(make_pair<std::string,int> ("wow", 2));
...
m.getBy1st("hello"); // returns 1
m.getBy2nd(2);// returns "wow"

它应该适用于 O(log(n)) 并存储在 std::pair 中。我无法确定用于存储的数据结构。也许我可以使用 rb-tree 的一些变体来存储它?

4

2 回答 2

2

这听起来很像Boost.Bimap

于 2010-07-18T02:17:32.837 回答
1

为什么不使用一对哈希表来存储数据——一个从 T1 散列到 T2,另一个散列在另一个方向?

于 2010-07-17T23:37:22.100 回答