Easyконтейнеры
Чем std::array отличается от встроенного массива?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
std::array<T, N> — обёртка над C-массивом, добавляющая STL-интерфейс. Размер известен в compile-time, heap не выделяется.
std::array<int, 5> a{1, 2, 3, 4, 5};
a.size(); // 5
a.at(10); // бросает std::out_of_range (bounds checking)
for (int x : a) {} // range-based for работает
int arr[5]; // C-массив: деградирует до int* при передаче в функцию- Не деградирует до
T*при передаче в функцию (как C-массив); - Value type — копируется целиком, в отличие от C-массива;
- С C++17 CTAD:
std::array a{1,2,3}выводитarray<int,3>; - C-массив стоит использовать только в C-совместимом API.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.