我有一个 switch
语句,其中每个案例都有唯一的代码,并且一些代码在除默认标签之外的所有案例之间共享。
有没有一种在不同 case 标签之间共享命令的好方法?
编辑:代码示例
switch (c)
{
case '+':
command.type = ADD;
commands.push_back(command);
break;
case '-':
command.type = SUB;
commands.push_back(command);
break;
case '>':
command.type = INC;
commands.push_back(command);
break;
case '<':
command.type = DEC;
commands.push_back(command);
break;
case '.':
command.type = PUT;
commands.push_back(command);
break;
case ',':
command.type = GET;
commands.push_back(command);
break;
default: break;
最佳答案
保留 std::map
从 char
到 command.type
的任何类型。
我们称它为 command_table
。
然后:
switch (c)
{
case '+':
case '-':
case '>':
case '<':
case '.':
case ',':
command.type = command_table[c];
commands.push_back(command);
break;
default: break;
}
或者,更短并且有一个额外的好处,那就是更难忘记一个案例:
auto it = command_table.find(c);
if (it != command_table.end())
{
command.type = it.second;
commands.push_back(command);
}
关于c++ - 如何在一个switch中实现多个case的一些独占语句和一些公用语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43545618/