Ссылка на словарь в 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;
}