是否可以传递函数对map元素的值的引用,并在那里进行修改?
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?
谢谢。
答案 0 :(得分:8)
答案是肯定的。
(operator []返回reference)
答案 1 :(得分:4)
是的,我们可以。
它也适用于std::vectors
(因为看起来你正在使用数字键,你可以考虑使用它们。)
答案 2 :(得分:2)
是
这与输入m [1] =“xyz”没什么不同。一旦完成它,编译器就会将它全部减少到相同的东西。
答案 3 :(得分:1)
建议:您可能希望将其作为指针而不是引用传递。我这样做是为了让随意的读者更明白它会被改变。
这一切都是为了清楚地与下一个穿着长矛的人沟通,他必须维护这段代码。
但除此之外,是的,这是完全合法的代码!
答案 4 :(得分:0)
是的,没关系 - 正如大家已经说过的那样 - 而且,你的编译器会告诉你它是不是。你可能想尝试一下;尝试将“hello”或(42)传递给foo(string&amp;)以感受编译器给你的警告。