9

是否可以将映射元素值的引用传递给函数并在那里修改它?

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?

谢谢你。

4

5 回答 5

9

答案是肯定的。

(运算符 [] 返回一个引用

于 2009-02-15T13:25:39.613 回答
4

我们可以。
它也适用于std::vectors(因为看起来你正在使用数字键,你可以考虑使用它们)。

于 2009-02-15T13:27:07.333 回答
2

是的。

这与键入 m[1] = "xyz" 没有什么不同。一旦完成它,编译器会将它全部减少到大致相同的东西。

于 2009-02-15T13:27:55.083 回答
1

忠告: 您可能希望将其作为指针而不是引用传递。我这样做是为了让不经意的读者更清楚它会被改变。

这一切都是为了与必须维护此代码的下一个人进行清晰的沟通。

但除此之外,是的,这是完全合法的代码!

于 2009-02-15T16:25:22.130 回答
0

是的,这很好 - 正如每个人都已经说过的那样 - 而且,如果不是,您的编译器会告诉您。您可能想尝试一下;尝试将 "hello" 或 (42) 传递给 foo(string&) 以了解编译器给您的警告。

于 2009-02-16T09:41:38.957 回答