是否可以将映射元素值的引用传递给函数并在那里修改它?
foo(string & s)
{
s = "xyz";
}
map<int, string> m;
m[1] = "abc";
foo(m[1]); // <-- Is it ok? Will m[1] be "xyz" after this call?
谢谢你。
答案是肯定的。
(运算符 [] 返回一个引用)
我们可以。
它也适用于std::vectors
(因为看起来你正在使用数字键,你可以考虑使用它们)。
是的。
这与键入 m[1] = "xyz" 没有什么不同。一旦完成它,编译器会将它全部减少到大致相同的东西。
忠告: 您可能希望将其作为指针而不是引用传递。我这样做是为了让不经意的读者更清楚它会被改变。
这一切都是为了与必须维护此代码的下一个人进行清晰的沟通。
但除此之外,是的,这是完全合法的代码!
是的,这很好 - 正如每个人都已经说过的那样 - 而且,如果不是,您的编译器会告诉您。您可能想尝试一下;尝试将 "hello" 或 (42) 传递给 foo(string&) 以了解编译器给您的警告。