Методы программирования / Стиль для избежания больших переключателей / если блоки в C? - PullRequest
1 голос
/ 19 февраля 2012

Это был просто быстрый вопрос, чтобы увидеть, есть ли разные способы кодирования чего-то похожего, когда дело доходит до оценки условных операторов / потока управления.

Например:

  • If Statements
  • Переключение операторов

Есть ли более удобный способ сделать это, поскольку у меня есть опция If (value == X) { // do X } и Switch(value) { case X: ...

При выполнении этого с более100 значений, есть ли какой-нибудь подход, основанный на данных, который можно было бы использовать, или какие-то другие методы оценки, которые бы приводили в порядок код?

1 Ответ

4 голосов
/ 19 февраля 2012

Если ваши значения являются целыми числами и не редки, иногда может быть удобно использовать таблицу поиска (как для данных, так и для кода) - в этом последнем случае вы используете указатели на функции и часто называют таблицей переходов, которая кстати, что часто делает компилятор с switch блоками); если альтернатива проверяет возможные значения одно за другим, производительность повышается с O (N) до O (1).

Также для нецелых данных можно использовать хеш-таблицы. Насколько они удобны, зависит от случая к случаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...