struct作为map的key时,需要重载该结构体
生活随笔
收集整理的這篇文章主要介紹了
struct作为map的key时,需要重载该结构体
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當結構體作為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; }總結
以上是生活随笔為你收集整理的struct作为map的key时,需要重载该结构体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构-栈】C语言实现顺序栈基本操作
- 下一篇: ps、top 、free查看用户资源信息