Mediumtuple

Что такое std::tuple и как им пользоваться?

1Постановка

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

2Решение

`std::tuple<T1, T2, ...>` — гетерогенный контейнер фиксированного размера. Аналог struct с безымянными полями, типы определяются на compile-time.

auto t = std::make_tuple(1, 2.0, "hi");  // tuple<int, double, const char*>

// Доступ
std::get<0>(t);      // по индексу
std::get<int>(t);    // по типу (если уникален)
std::tuple_size_v<decltype(t)>;  // 3

// C++17 structured bindings
auto [i, d, s] = t;

// std::apply вызывает функцию элементами tuple
std::apply([](int a, double b, const char* c) { /* ... */ }, t);

Удобен для возврата нескольких значений из функции и для compile-time метапрограммирования (typelist).

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

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

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