Создание словаря
Часть раздела Логика и управление потоком путешествия по C++ на Coddy. Урок 24 из 56.
Теперь, когда вы понимаете, что такое map, давайте узнаем, как создать его и добавить в него пары ключ-значение. При объявлении std::map необходимо указать и тип ключа, и тип значения, используя угловые скобки.
Вот базовый синтаксис для создания map:
std::map<KeyType, ValueType> mapName;Например, чтобы создать map, который хранит имена students в качестве ключей, а их результаты тестов — в качестве значений:
std::map<std::string, int> studentScores;Чтобы добавить элементы в вашу map, можно использовать нотацию с квадратными скобками и ключом, а затем присвоить значение:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Это создаёт три пары ключ-значение в map. Имя каждого student служит ключом, который позволяет быстро получить соответствующий score.
Чтобы перебрать все элементы в map, можно использовать цикл range-based for loop с auto. Каждый элемент в std::map представляет собой пару ключ–значение, и получить доступ к ключу можно с помощью .first, а к значению — с помощью .second:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Здесь auto автоматически определяет тип каждого элемента (пары ключ-значение), pair.first предоставляет ключ (имя student), а pair.second предоставляет значение (оценку). Обратите внимание, что std::map автоматически хранит свои элементы отсортированными по ключу, поэтому перебор map выведет записи в алфавитном порядке.
Задание
ЛегкоCreate программу, которая создаёт систему отслеживания оценок student с использованием std::map. Ваша программа будет хранить имена student в качестве ключей, а их результаты тестов — в качестве значений.
Будут предоставлены следующие входные данные:
- Целое число
n, представляющее количество students - Затем
nпар входных данных:- Строка, представляющая имя student
- Целое число, представляющее score student
Ваша программа должна:
- Create
std::map<std::string, int>с именемgrades - Считать количество students
- Для каждого student считать его имя и score, затем добавить их в map, используя запись с квадратными скобками
- После добавления всех students вывести информацию о каждом student в формате, показанном ниже
- Вычислить и вывести общее количество students, сохранённых в map
Используйте следующий точный формат вывода:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]Students должны выводиться в порядке, в котором они появляются при переборе map (это будет алфавитный порядок, поскольку map автоматически сортирует по ключу). Используйте range-based for loop для перебора map, обращаясь к каждой паре ключ-значение и выводя имя student, за которым следует его score.
Попробуйте сами
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Прочитать количество студентов
int n;
cin >> n;
// Создать map для хранения оценок
map<string, int> grades;
// TODO: Напишите свой код здесь
// Прочитать имя и оценку каждого студента, затем добавить в map
// Вывести результаты
cout << "Student Grades:" << endl;
// TODO: Используйте range-based for loop для вывода оценки каждого студента
// Вывести общее количество студентов
cout << "Total students: " << grades.size() << endl;
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями4Словари (пары ключ-значение)
Знакомство с std::mapСоздание словаряДоступ и изменение значенийПроверка наличия ключейУдаление парИтерация по словарюПовторение: частота слов2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаровПотренируйтесь самостоятельно: Онлайн-компилятор C++