Выбор ответа Junior Современный C++20/23 спрашивают часто обновлено
Структурные привязки
Вопрос
Что делает for (const auto& [name, score] : scores) для std::map<std::string, int> scores?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Разбирает каждую пару на ссылки name (ключ) и score (значение). Структурные привязки (C++17) раскладывают объект на составляющие: пару, кортеж, массив или структуру с публичными полями.
Варианты ответа
- Разбирает каждую пару на ссылки
name(ключ) иscore(значение)правильный ответ - Создаёт копию map, по которой идёт обход, а исходная не меняется
- Объявляет массив из двух элементов на каждой итерации цикла
- Сортирует map по значению
scoreи обходит в этом порядке
Разбор
Структурные привязки (C++17) раскладывают объект на составляющие: пару, кортеж, массив или структуру с публичными полями. Здесь каждый элемент map это std::pair<const std::string, int>, и name с score ссылаются на его поля.
- Копии контейнера нет, благодаря
const auto&нет и копий элементов. - Синтаксис в квадратных скобках не массив.
- Порядок обхода остаётся порядком ключей.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.