2

ポインタ型のネストされたマップがあると仮定します。次に、ネストされたマップに挿入する1行のステートメントがあります。

map<int, map<int, int> >* nestedMap;

現在、私はこれを2つのステップで行っています。最初に内部マップを作成し、次に以下のように外部マップに挿入します。

nestedMap->insert(make_pair(int, map<int, int>)(int, innermap));

マップがポインタタイプでない場合は、このように簡単に挿入できます。

nestedMap[int][int] = int;

ポインタ型のネストされたマップに挿入する簡単な方法はありますか?

ありがとうプラブ

4

4 に答える 4

7

map::operator[] キーと値のペアが存在しない場合は、自動的に作成されます。
(それがconstではない理由です!)したがって、内部マップを手動で作成する必要はありません。

ペアが自動的に作成されないようにする場合は、map::find()またはを使用しますmap::at()

于 2012-11-19T08:22:56.510 に答える
3

最も単純なワンライナーは次のとおりです。

(*nestedMap)[int][int] = int;
于 2012-11-19T08:36:54.120 に答える
1

operator[]経由でアクセス->

nestedMap->operator[](5)[6] = 7;

これはに類似しています

nestedMap[5][6] = 7;

nestedMapがポインタでない場合。

どちらの場合も、マップを明示的に挿入する必要はないことに注意してください。

于 2012-11-19T08:25:55.187 に答える
1

私があなたの質問を正しく理解していれば、あなたは実際にポインタの代わりに参照を使うことができます。ネストされたマップではなく、外部マップに問題があります。

以下のコードを参照してください、あなたは何が欲しいですか?

map<int, map<int, int> >* nestedMap  = new map<int, map<int, int> >;   
map<int, map<int, int> > &nestedMapAlais = *nestedMap;
nestedMapAlais[1][2] = 3;
于 2012-11-19T08:28:39.590 に答える