参考STL地图元素的值?

时间:2009-02-15 13:22:44

标签: c++ stl map

是否可以传递函数对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?

谢谢。

5 个答案:

答案 0 :(得分:8)

答案是肯定的。

(operator []返回reference

答案 1 :(得分:4)

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

答案 2 :(得分:2)

这与输入m [1] =“xyz”没什么不同。一旦完成它,编译器就会将它全部减少到相同的东西。

答案 3 :(得分:1)

建议:您可能希望将其作为指针而不是引用传递。我这样做是为了让随意的读者更明白它会被改变。

这一切都是为了清楚地与下一个穿着长矛的人沟通,他必须维护这段代码。

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

答案 4 :(得分:0)

是的,没关系 - 正如大家已经说过的那样 - 而且,你的编译器会告诉你它是不是。你可能想尝试一下;尝试将“hello”或(42)传递给foo(string&amp;)以感受编译器给你的警告。