Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpPmRfMR 305 of 390 menu
◀ ▶

Ссылка на словарь в C++

При присваивании в новую переменную записывается копия словаря. Имена никак не связаны. Запишем копию и поменяем значение по ключу "a". Исходный словарь останется прежним:

#include <iostream> #include <map> #include <string> int main() { std::map<std::string, int> obj1 = {{"a", 1}, {"b", 2}}; std::map<std::string, int> obj2 = obj1; obj2["a"] = 9; std::cout << obj1["a"] << "\n"; // выведет 1 return 0; }

Можно сделать так, чтобы копировалось не значение, а ссылка. При изменении одного имени меняется и второе. После типа ставят &. Запишем ссылку и поменяем значение через нее:

#include <iostream> #include <map> #include <string> int main() { std::map<std::string, int> obj1 = {{"a", 1}, {"b", 2}}; std::map<std::string, int>& obj2 = obj1; obj2["a"] = 9; std::cout << obj1["a"] << "\n"; // выведет 9 return 0; }

Расскажите, каким будет результат выполнения кода:

#include <iostream> #include <map> #include <string> int main() { std::map<std::string, int> obj1 = {{"x", 1}, {"y", 2}}; std::map<std::string, int> obj2 = obj1; obj2["x"] = 7; std::cout << obj1["x"] << "\n"; std::cout << obj2["x"] << "\n"; return 0; }

Расскажите, каким будет результат выполнения кода:

#include <iostream> #include <map> #include <string> int main() { std::map<std::string, int> obj1 = {{"m", 1}, {"n", 2}}; std::map<std::string, int>& obj2 = obj1; obj1["m"] = 5; std::cout << obj1["m"] << "\n"; std::cout << obj2["m"] << "\n"; return 0; }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить