EasySTL

Что такое std::pair и std::tuple — и когда что использовать?

1Постановка

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

2Решение

`std::pair<A,B>` — ровно два значения разного типа, доступ через .first и .second. `std::tuple<T1,T2,...>` — произвольное число значений, доступ через std::get<I>(t).

std::pair<int, std::string> p{1, "hello"};
std::cout << p.first << ' ' << p.second;

std::tuple<int, double, std::string> t{1, 2.0, "hi"};
std::cout << std::get<0>(t);             // по индексу
std::cout << std::get<std::string>(t);   // по типу

// C++17 structured bindings
auto [key, value] = *map_iter;           // для pair
  • pair — в API, где нужно вернуть/хранить ровно два значения (map::insert);
  • tuple — для большего числа значений, variadic templates;
  • Если значения семантически связаны — лучше структуру с именованными полями.

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

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

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