如何用struct作为map的Key

doudoushen doudoushen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
struct EntryInfo
{
EntryInfo()
{
memset( this, 0, sizeof(EntryInfo) );
}

char achEntryName[16];
byte byEntryType;
byte byAddrType;
WORD wDialBitRate;
char achUIName[16];

BOOL operator == ( const EntryInfo &tEntry ) const
{
if ( byEntryType != tEntry.byEntryType )
return FALSE;
if( byAddrType != tEntry.byAddrType )
return FALSE;
if ( strcmp( achEntryName, tEntry.achEntryName ) != 0 )
return FALSE;
return TRUE;
}

BOOL operator < ( const EntryInfo &tEntry ) const
{
if( this->byEntryType > tEntry.byEntryType )
{
return FALSE;
}
else if(this->byEntryType == tEntry.byEntryType)
{
if( this-> byAddrType > tEntry.byAddrType )
{
return FALSE;
}
else if( strcmp(this->achEntryName, tEntry.achEntryName) >0 )
{
if( strcmp( this->achUIName, tEntry.achUIName ) > 0 )
{
return TRUE;
}
else
{
return FALSE;
}

}
else
{
return TRUE;
}
}
else
{
return TRUE;
}


}
};


typedef map<EntryInfo, int> defMap;
defMap g_map;



void CStl_mapDlg::OnButton2()
{


EntryInfo t1;
strcpy(t1.achEntryName, "sq");
strcpy(t1.achUIName, "sq_UI");
t1.byAddrType = 1;
t1.byEntryType =1;
t1.wDialBitRate = 1;
g_map.insert( defMap::value_type(t1, 1));


EntryInfo t2;
strcpy(t2.achEntryName, "sq2");
strcpy(t2.achUIName, "sq_UI2");
t2.byAddrType = 2;
t2.byEntryType =2;
t2.wDialBitRate = 2;
g_map.insert( defMap::value_type(t2, 2));

EntryInfo t3;
strcpy(t3.achEntryName, "sq3");
strcpy(t3.achUIName, "sq_UI3");
t3.byAddrType = 3;
t3.byEntryType =3;
t3.wDialBitRate = 3;
g_map.insert( defMap::value_type(t3, 3));


}

void CStl_mapDlg::OnButton3()
{

EntryInfo t3;
strcpy(t3.achEntryName, "sq3");
strcpy(t3.achUIName, "sq_UI3");
t3.byAddrType = 3;
t3.byEntryType =3;
t3.wDialBitRate = 3;
int x = g_map[t3];//饭后一直是0

}
...全文

相关推荐

评论 28
收藏 已收藏
分享
返回顶部
doudoushen
C++ 语言 65,214 成员 250,514 内容