我有以下 C++ 代码:
struct MyStruct
{
int a[2];
int b[2];
};
std::map<std::pair<int, int> , MyStruct*> MyMap;
现在我在 MyMap 上运行这个循环:
for(std::map<std::pair<int, int> , MyStruct*>::iterator itr = MyMap.begin(); itr != MyMap.end(); ++itr)
{
std::pair<int, int> p (itr->first().second, itr->first().first);
auto i = MyMap.find(p);
if(i != MyMap.end())
{
//do something
}
}
我实际上想要做的是通过交换另一对的元素来形成一对,例如,我在 MyMap 中有一个密钥对(12,16),还有另一个密钥对(16,12);这两个键存在于 MyMap 中,我确定。但是当我应用上述技术 MyMap 不返回对应于交换键的值时,我猜测 MyMap.find(p) 与 Key 的指针匹配;但是有没有办法让我可以强制 MyMap.find(p) 匹配 Key (pair) 中的相应值,而不是匹配 Key (pair) 中的指针?还是我在这里做错了什么?