C ++ Длинный оператор switch или поиск с картой? - PullRequest
30 голосов
/ 17 марта 2010

В моем приложении C ++ есть некоторые значения, которые действуют как коды для представления других значений. Чтобы перевести коды, я спорил между использованием оператора switch или stl map. Переключатель будет выглядеть примерно так:

int code;
int value;
switch(code)
{
case 1:
    value = 10;
    break;
case 2:
    value = 15;
    break;
}

Карта будет stl::map<int, int>, а перевод будет простым поиском с кодом, используемым в качестве значения ключа.

Какой из них лучше / эффективнее / чище / принят? Почему?

Ответы [ 12 ]

0 голосов
/ 17 марта 2010

Я думаю, что сгенерированный код структуры switch-case может вырасти довольно большим, если количество «кодов» станет большим, и в этом случае я думаю, что stl :: map более уместен.

0 голосов
/ 17 марта 2010

Я говорю map, если все, что вы делаете, это присваиваете значение. Моя причина в том, что он расширяемый без изменения кода, которым не является ваш оператор switch.

кстати, как насчет enum ?

...