マップ要素の値への参照を関数に渡して、そこで変更しても問題ありませんか?
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&) に渡して、コンパイラーからの警告を感じてみてください。