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 подскажет развёрнутый ответ в реальном времени.