C语言,多对一的对应关系查表该如何编写?
发布网友
发布时间:2022-05-20 11:36
我来回答
共1个回答
热心网友
时间:2023-10-17 23:08
typedef struct
{
uint32_t uiMin;
uint32_t uiMax;
uint32_t uiRet;
}Range2RetMapping_t;
//TODO:: How many types?
#define MAX_TYPE_CNT 3
static Range2RetMapping_t g_mapRange2Ret[]=
{
{ 1, 10, 1},
{11, 20, 2},
{21, 30, 3}
//TODO:: add others mapping.
};
//usage
uint32_t GetResult(uint32_t uiValue)
{
for(uint32_t i = 0; i < MAX_TYPE_CNT; i++)
{
if(g_mapRange2Ret[i].uiMin < uiValue &&
g_mapRange2Ret[i].uiMax > uiValue )
{
return g_mapRange2Ret[i].uiRet;
}
}
return -1;
}
还有其他方式可以用,但是都得自己去建立映射关系才行。
会用stl容器吗?
multimap,和map容器差不多,但是其key值可以重复的。方法百度。
追问谢谢了,还有点问题想请问下,追问字数*写不下了,请看私信