В данном случае первоначальный код будет быстрее, чем std::set, т.к. раньше мы тягали из динамической памяти один символ, а теперь придётся проходиться по мапе
2. Такие утверждения следует подкреплять бенчмарком.
В принципе верно, но в данном случае излишне, т.к. по моему тут все достаточно очевидно.
Хотя в данном случае задержки по отношению к оригинальному коду будут минимальны, потому что множество маленькое, но они будут.
Поэтому я и предложил другой вариант, но он то же будет медленнее, чем оригинальный код.
HoShik, если производительность важна, то лучше оставить код так как есть - это самый быстрый вариант. Для краткости, можно вынести сравнения в #define или inline функцию и использовать ее в коде.
Многие парсеры (HTTP, JSON, XML), написанные на Си и используемые в проектах с большими нагрузками используют именно такой "многословный" подход и не пытаются экономить на строчках, т.к. скорость работы важнее красоты кода.