C++ 按键和值搜索对称关联数组

C++ 按键和值搜索对称关联数组,c++,arrays,associative,C++,Arrays,Associative,我需要描述一个要搜索的关联数组,可以使用键和值。具有添加、删除、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"); /

我需要描述一个要搜索的关联数组,可以使用键和值。具有添加、删除、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"
symmap-m;
m、 插入(配对(“你好”,1));
m、 插入(配对(“哇”,2));
...
m、 getBy1st(“你好”);//返回1
m、 GetBySecond(2);//返回“哇”
它应该适用于O(log(n))并存储在std::pair中。 我无法决定用于存储的数据结构。
也许我可以使用rb树的一些变体来存储它?

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

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

这听起来很像这听起来很像。

陈述的方式听起来像家庭作业。陈述的方式听起来像家庭作业。