STL中的一般都是用小于号(<)做比较, map中的查询就是用的小于号,因此我们在用结构体或者类做map的关键字的时候,就要重载类的小于号,下面是我在工作中写的一个简单例子, 经过测试的,没有问题,但是写法比较土, 如果有更好的在补上。 class CAviFileKey { public: CAviFileKey() { mi64UserId = 0; miId = 0; miIndex = 0; } ~CAviFileKey(){} bool operator == (const CAviFileKey &info)<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script> const { if (this != &info) { if (!((info.mi64UserId == mi64UserId) && (info.miId == miId ) && (info.miIndex == miIndex ))) { return false; } } return true; } bool operator < (const CAviFileKey &info)const { if (this != &info) { if (mi64UserId < info.mi64UserId) { return true; } else if (mi64UserId == info.mi64UserId) { if (miId < info.miId ) { return true; } else if (miId == info.miId ) { if (miIndex < info.miIndex ) { return true; } } } } return false; } public: INT64 mi64UserId; int miId ; int miIndex ; };