写这篇文章是因为看到QQ群里面有人问了这样一个问题:
class CA;
CA a;
map< int, CA > _map;
_map.insert( std::make_pair( 2, a ) );
这样可以,
class CA;
CA a;
map< CA, int > _map;
_map.insert( std::make_pair( a, 2 ) );
这样编译出错
群里面有人说没有重载== 运算符,最开始我也以为这样。但是我还是怀着怀疑的态度测试了一下,发现不是这样的。 需要重载的运算符是< ,原因和map的存储结构有关,map是树结构存储,所以在存储过程中会用到key 的比较大小,因此需要重载< 运算符