Easyinclude-order

Почему нужно группировать #include в определённом порядке?

1Постановка

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

2Решение

Согласованный порядок include-ов ловит скрытые зависимости и улучшает читаемость. Свой заголовок первым — проверяет self-sufficiency.

// foo.cpp
#include "foo.h"        // 1) соответствующий заголовок (self-sufficiency)

#include <cstdio>        // 2) C system headers
#include <cstdlib>

#include <string>        // 3) C++ standard headers
#include <vector>

#include <boost/asio.hpp>// 4) сторонние библиотеки

#include "utils.h"      // 5) свои заголовки проекта

Если foo.h работает только после <string>, без первого include это проявится. Внутри группы — алфавитный порядок. Автоматизируют clang-format и include-what-you-use.

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

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

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