Mediumтипы

Чем size_t отличается от int и почему важно использовать его для индексов?

1Постановка

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

2Решение

`size_t` — беззнаковый целочисленный тип, разрядность которого соответствует платформе (8 байт на x64). Гарантированно вмещает размер любого объекта, используется всеми стандартными функциями размеров. `int` — знаковый, обычно 4 байта.

std::vector<int> v(1'000'000);
for (size_t i = 0; i < v.size(); ++i) {  // size_t — нет предупреждений
    v[i] = i;
}

// Минус беззнаковой арифметики:
size_t i = 0;
auto bad = i - 1;   // огромное число, не -1
  • Для индексов/размеров важно size_t: не переполнится на больших контейнерах, совместим с STL API;
  • Минус: беззнаковая арифметика (i - 1 при i==0 даёт огромное число) — в циклах с переходом через ноль нужно быть осторожным.

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

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

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