以下の例の比較演算子をどのように実装すれば、ObjectPair( &a, &b )
と等しくなりObjectPair( &b, &a )
ますか? さらに、stdext::hash_map
代わりに を使用してこれをどのように実装しstd::map
ますか?
struct ObjectPair
{
public:
ObjectPair( Object* objA, Object* objB )
{
A = objA;
B = objB;
}
bool operator<( const ObjectPair& pair ) const
{
// ???
}
Object* A;
Object* B;
};
int main()
{
std::map< ObjectPair, int > pairMap;
Object a;
Object b;
pairMap[ ObjectPair(&a, &b) ] = 1;
pairMap[ ObjectPair(&b, &a) ]++;
/// should output 2
std::cout<< pairMap[ ObjectPair( &a, &b ) ] << std::endl;
return 0;
}