Создание таблицы переходов
Если значения ветвей выбора представляют собой арифметическую прогрессию (см.листинг 27), компилятор может сформировать таблицу переходов – массив, проиндексированный case-значениями и содержащий указатели на соответствующие им case-обработчики. В этом случае, сколько бы оператор switch ни содержал ветвей, – один или миллион – он выполняется за одну итерацию. Красота!
switch (a)
{
case
1 : /* код обработчика */ break;
case
2 : /* код обработчика */ break;
case
3 : /* код обработчика */ break;
case
4 : /* код обработчика */ break;
case
5 : /* код обработчика */ break;
case
6 : /* код обработчика */ break;
case
7 : /* код обработчика */ break;
case
8 : /* код обработчика */ break;
case
9 : /* код обработчика */ break;
case
10 : /* код обработчика */ break;
case
11 : /* код обработчика */ break;
}