У меня есть код С++ 11, похожий ниже:
switch(var) {
case 1: dosomething(std::get<1>(tuple));
case 2: dosomething(std::get<2>(tuple));
...
}
Есть ли способ удалить этот большой переключатель? Обратите внимание, что get<var>
не работает, потому что var не является константой, но я знаю, что var находится в малом диапазоне, то есть (0-20).
Обратите внимание, что здесь нужно избегать использования массива, который вызывает поиск массива...
EDIT:
хорошо по вопросу эффективности, есть дискуссия Производительность массива функций над операторами if и switch
Для моей собственной цели я не утверждаю, какой из них лучше.