Словарь объектов в C++
Словарь объектов хранит пары «ключ - объект». По ключу находят нужный экземпляр без перебора всего набора.
Тип записывают как std::map<std::string, User>.
Пары задают в фигурных скобках через запятую.
Запишем класс User:
#include <iostream>
#include <map>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим словарь объектов и выведем возраст по ключу john:
int main() {
std::map<std::string, User> users = {
{"john", User("john", 21)},
{"eric", User("eric", 22)}
}
;
std::cout << users["john"].age << "\n";
return 0;
}
Пустой словарь заполняют оператором []: ключ
слева, объект справа. Запишем класс User:
#include <iostream>
#include <map>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим пустой словарь, добавим записи и выведем имя по ключу:
int main() {
std::map<std::string, User> users;
users["john"] = User("john", 21);
users["eric"] = User("eric", 22);
std::cout << users["john"].name << "\n";
return 0;
}
Цикл по словарю перебирает пары ключ и значение.
Запишем класс User:
#include <iostream>
#include <map>
#include <string>
class User {
public:
std::string name;
int age;
User(std::string name, int age) : name(name), age(age) {}
};
Создадим словарь и выведем ключ и имя каждого пользователя:
int main() {
std::map<std::string, User> users = {
{"a", User("john", 21)},
{"b", User("eric", 22)}
}
;
for (const auto& pair : users) {
std::cout << pair.first << ": " << pair.second.name << "\n";
}
return 0;
}
Создайте std::map<std::string, User>: ключи
"one" и "two", значения - объекты
User с разными именами. Выведите возраст
пользователя по ключу "one".
Сделайте класс City с названием и населением
в конструкторе. Создайте словарь таких объектов,
добавьте три города с разными ключами и выведите
названия всех городов в цикле.