Выбор ответа Junior Современный C++20/23 спрашивают часто обновлено

Структурные привязки

Вопрос

Что делает for (const auto& [name, score] : scores) для std::map<std::string, int> scores?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Разбирает каждую пару на ссылки name (ключ) и score (значение). Структурные привязки (C++17) раскладывают объект на составляющие: пару, кортеж, массив или структуру с публичными полями.

Варианты ответа

  1. Разбирает каждую пару на ссылки name (ключ) и score (значение)правильный ответ
  2. Создаёт копию map, по которой идёт обход, а исходная не меняется
  3. Объявляет массив из двух элементов на каждой итерации цикла
  4. Сортирует map по значению score и обходит в этом порядке

Разбор

Структурные привязки (C++17) раскладывают объект на составляющие: пару, кортеж, массив или структуру с публичными полями. Здесь каждый элемент map это std::pair<const std::string, int>, и name с score ссылаются на его поля.

  • Копии контейнера нет, благодаря const auto& нет и копий элементов.
  • Синтаксис в квадратных скобках не массив.
  • Порядок обхода остаётся порядком ключей.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.