您的位置:首页 > 其它

struct作为map的key时,需要重载该结构体

2014-09-03 14:52 453 查看
当结构体作为map中的key时,这个结构体必须重载"<"运算符,  否则将出错,看我完整代码:

 

#ifndef WIN32
#include <string.h>
#else
#include <string>
#endif

#include <iostream>
#include <map>

using namespace std;

typedef struct KeyNode_s
{
long key;
bool operator < (const KeyNode_s& s) const
{
return key < s.key;
}
}KeyNode;

typedef struct N_1
{
int c;
}CRTPSession;

typedef struct N_2
{
int d;
}CJOpPlayback;

typedef struct SessionInfo_s
{
CRTPSession*	_session;
CJOpPlayback*	_opPlayback;

SessionInfo_s()
{
_session = NULL;
_opPlayback = NULL;
}

}SessionInfo;

typedef struct Hello_s
{
char name[20];

Hello_s(const char* s)
{
strcpy(name, s);
}
bool operator < (const Hello_s& s) const
{
return strcmp(name, s.name) < 0;
}
}Hello;

typedef std::pair<KeyNode, Hello> GBClientPair;
typedef std::map<GBClientPair, SessionInfo> RtpSessionList;
// map中的key是pair, 但是pair中有结构体, 所以这些结构体必须重载"<"运算符

void test()
{
KeyNode knode;
SessionInfo sinfo;
Hello h("world");
RtpSessionList list;

GBClientPair pa(knode, h);

list[pa] = sinfo;
}

int main()
{
test();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐