【发布时间】:2013-01-05 03:35:34
【问题描述】:
如何在下面的示例中实现比较运算符,以使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;
}
【问题讨论】:
-
@Jake223:不,你不应该。
std::map::operator[]返回对该值的引用。如果没有,那么这段代码甚至无法编译。