私は要素を格納するためにマップを使用していますが、このメモリを呼び出し側の関数に渡すことができるようなダイナミックマップメモリを割り当てる必要がありますが、次のコードスニペットは私を混乱させます。ここを見てください。C++ Maps、これらの2つの宣言はどのように正しいのですか?
std :: map <int, int> map1;
map1[some_integer_x] = some_integer_y; // OK at compilation.
ただし、次のスニペットはOKではありません。エラーが発生します。ここで
std :: map <int, int> * map2 = new std :: map <int, int>
map2[some_integer_x] = some_integer_y; // Not OK at compilation.
はそれが私は、これはいくつかのポインタの問題に関連していることを理解することができますGCC 5.
error: no match for ‘operator=’ (operand types are ‘std::map<int, int>’ and ‘int’)
map2[some_integer_x] = some_integer_y;
で私を与えるエラーです。理由は何でしょうか?私の他の選択肢は何ですか?私はマップが大量の情報を含んでいるのでコピーを含まずに地図を渡したい。
あなたのポインタ間接参照する必要は '(* MAP2)[some_integer_x]'ところで、あなたはおそらくする必要はありませんダイナミックマップ、あなたの使い方は何ですか? – Galik
ああ、いいね。ありがとうございました。 –
ところで、コピーを避けるために参照*でマップ*を渡すことができます。または、動的作成に頼らずにコピーを避けるために 'std :: move'を使ってマップを移動*移動*できます。 – Galik