- 论坛徽章:
- 0
|
#include <iostream>
#include <string>
#include <map>
using namespace std;
//using namespace __gnu_cxx;
typedef struct _HashKeyType {
u_int32_t event_id;
u_int32_t sip;
u_int32_t dip;
u_int32_t sport;
u_int32_t dport;
} HashKeyType;
class equalKey {
public:
size_t operator()(const HashKeyType & _KeyVal) const {
unsigned long key = 0;
key = _KeyVal.event_id + _KeyVal.sip + _KeyVal.dip + _KeyVal.sport + _KeyV
al.dport;
return (size_t)key;
}
bool operator()(HashKeyType &key1, HashKeyType & key2)const {
if (key1.event_id < key2.event_id)
return true;
if (key1.sip < key2.sip)
return true;
if (key1.dip < key2.dip)
return true;
if (key1.sport < key2.sport)
return true;
if (key1.dport < key2.dport)
return true;
return false;
}
};
int main()
{
HashKeyType key;
map <HashKeyType, string, equalKey> m_EventHashMap;
key.event_id = 1;
key.sip = 2;
key.dip = 3;
key.sport = 4;
key.dport = 5;
m_EventHashMap.insert(map<HashKeyType, string, equalKey>::value_type(key, "bell")); //不合法使用,为什么?
m_EventHashMap.find(key); //不合法,为什么?
return 0;
}
请帮我检查下问题,谢谢大家!如果把insert和find去掉,能编译成功。但是加了insert或find就不能成功,请指教! |
|