Easyautomodern-cpp

Чем отличается auto от явного указания типа?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

auto выводит тип по инициализатору (auto x = 5;int). Особенно полезен для итераторов, лямбд и сложных шаблонных типов.

std::vector<std::pair<int, std::string>>::const_iterator it = v.cbegin(); // длинно
auto it = v.cbegin();                                                    // коротко

const int& cr = someValue;
auto a = cr;     // int  — auto снимает top-level const и ссылку
auto& b = cr;    // const int& — сохранить ссылку

Важно: auto отбрасывает top-level cv-квалификаторы и ссылки — для сохранения используйте auto& или decltype(auto). Минус — иногда тип не очевиден из кода.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.