std::map как альтернатива switch для строк

Иногда возникает желание использовать в switch строковые значения как ключевые элементы выбора (в качестве меток), но увы, в C++ switch для меток принимает только целые числа.
Перед прочтением этой темы рекомендуется познакомится с map: C++. map. Знакомство с синтаксисом
Иногда не очень удобно не иметь возможности определять выбор по строковому значению, но непосредственно со switch тут ничего не сделать. Тем не менее, есть альтернатива: можно использовать map. Синтаксис, конечно, будет отличаться, но важно, что можно будет делать выбор, опираясть на строковые данные.
Хоть синтаксис отличается и пока что это больше похоже на обычный if, это на самом деле можно использовать для выбора одного действия из множества возможных. Только нужно учитывать, что строковое значение может получаться таким, каких ключей у map просто не будет. Когда обращаемся к map, мы должны понимать, что ключ действителен, а для этого нужно использовать итератор:
В более продвинутом примере использования map значениями можно сделать функции:
Об указателях на функции можно прочитать в теме: Указатель на функцию. При обращени к функциям не забываем, что если мы хотим их исполнять, нужно делать вызов, именно поэтому в #2.4 значение вывдится со скобками (оно ведь функция).
В старых компиляторах не было STL, поэтому в них не было столь удобной альтернативы. Людям приходилось либо не использовать строковые значения под выбор одного из множества действий, либо писать что-то, что можно было бы использовать как альтернативу: кто-то писал свой map, а кто-то мог писать что-то другое.
Статья переписана 02.01.2022

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/aleksandr-shen/programmirovanie-teoremy-i-zadachi-11647808/?lfrom=15589587
Яндекс.Метрика