我正在努力成对有效地存储信息:
例如,我有两个表示 (x,y) 坐标的结构,我希望计算并存储它们之间的距离。目前我将所有值存储在一个
unordered_map<pair<Struct1*,Struct2*,double>
我的问题是,在搜索时,我希望结果与我不必存储两次信息<Struct1*,Struct2*>
的方式相同。<Struct2*,Struct1*>
我曾考虑过使用多重映射,但我认为这将与有关如何执行此操作的任何建议std::hash<pair<pointer1,pointer2>>
的哈希值相同?pair<pointer2,pointer1>
编辑:
我考虑过做一个客户哈希,它只是使用 std::hash 添加指针的两个哈希值,例如:
size_t operator() (const pair<Location*,Location*> &key)
{
hash<Location*> hash1;
return (hash1(key.first) + hash1(key.second));
}
这在我调用 find(struct1,struct2) 时有效,但在我调用 find(struct2,struct1) 时无效