3 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
您無需使用任何地圖或如下所示的unordered_map就可以實(shí)現(xiàn)它。僅比較第一個(gè)字符以識(shí)別哪個(gè)字符串。如果有多個(gè)匹配項(xiàng),則可以回退到該case語句中的if / else鏈。如果沒有很多以相同字母開頭的字符串,則比較次數(shù)將大大減少。
char *str = "foo";
switch(*str)
{
case 'f':
//do something for foo
cout<<"Foo";
break;
case 'b':
//do something for bar
break;
case 'c':
if(strcmp(str, "cat") == 0)
{
//do something for cat
}
else if(strcmp(str, "camel") == 0)
{
//do something for camel
}
}
即使它不是標(biāo)準(zhǔn)的,這看起來也是最佳的解決方案,無需花費(fèi)任何費(fèi)用。
- 3 回答
- 0 關(guān)注
- 618 瀏覽
添加回答
舉報(bào)