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 に答える