私は次の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); もあります。これら 2 つのキーは MyMap に存在し、私は確かに知っています。しかし、上記の手法を適用すると、MyMap はスワップされたキーに対応する値を返さないため、MyMap.find(p) が Key; のポインターと一致していると推測しています。しかし、 MyMap.find(p) を Key (pair) のポインターと一致させる代わりに、 Key (pair) の対応する値と一致させる方法はありますか? または、ここで間違っていることはありますか?