构造一个键、值都可索引的map时遇到的问题
普通map只能用key索引mapped_value,而我需要同时能用mapped_value索引key的容器,于是开始思考了:
既然要两者都可索引,就必须有两个map了:
map<key_type, mapped_type> m_mapValue;map<mapped_type, key_type> m_mapKey;
map<key_type, mapped_type> m_mapValue;set<mapped_type, CmpKey> m_mapKey;
template<typename _Kty, typename _Pr = less<_Kty>> class CMyMap{// ...class CmpKey { public: CmpKey(const map<key_type, mapped_type> & mapValue) : m_mapValue(mapValue) {} bool operator()(key_type lhs, key_type rhs) const {return _Pr(m_mapValue[lhs], m_mapValue[rhs]);} private: const map<key_type, mapped_type> & m_mapValue; };// ...map<key_type, mapped_type> m_mapValue;set<mapped_type, CmpKey(m_mapValue)> m_mapKey;};