是否可以傳遞函數對map元素的值的引用,並在那裏修改它?引用STL地圖元素的值?
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?
謝謝。
是否可以傳遞函數對map元素的值的引用,並在那裏修改它?引用STL地圖元素的值?
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?
謝謝。
答案是肯定的。
(操作符[]返回一個reference)
是的,我們可以。
它也適用於std::vectors
(因爲它看起來像你使用數字鍵,你可能會考慮使用它們)。
是的。
這與鍵入m [1] =「xyz」沒有什麼不同。一旦編譯完成,編譯器將把它全部減少到幾乎相同的東西。
建議的一個建議:你可能想把它作爲指針而不是引用。我這樣做是爲了讓那些隨便的讀者更加明白它會被改變。
這是所有關於明確溝通下一個人的派克,誰必須維護此代碼。
但除此之外,是的,這是完全合法的代碼!
我尊敬地不同意你的建議。我傾向於更喜歡引用,除非在某些情況下我要提供空指針。否則,我恐怕我只是創建一個可能的方式來濫用代碼,即用空指針而不是有效的引用... – 2009-02-16 14:44:48
是的,沒關係 - 正如大家已經說過的 - 而且,您的編譯器會告訴您它是否不是。你可能想嘗試一下;嘗試將「hello」或(42)傳給foo(字符串&)以獲得編譯器給出的警告的感覺。
請注意矢量 ::迭代雖然(取消引用它不會產生引用) –
2009-02-15 14:06:19