Mediumenum
Можно ли перечислять enum class в цикле и как?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Напрямую — нет, у enum class нет встроенного итерирования. Приходится приводить к int и проверять диапазон, либо использовать сторонние библиотеки.
enum class Dir { Up, Right, Down, Left, Count };
for (int i = 0; i < static_cast<int>(Dir::Count); ++i) {
Dir d = static_cast<Dir>(i);
handle(d);
}- Sentinel
Dir::Countв конце удобен для цикла — значения должны быть плотно от 0 без дыр; - Альтернативы: библиотеки Magic Enum / Better Enums, operator++ для enum;
- В C++23/26 обсуждается reflection, который даст перечисление автоматически.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.