-1

キーがマップに存在するかどうかわからないときに、キーと値のペアの値をマップから変更するにはどうすればよいですか?

たとえば、マップにはキーと値のペアがあります。

a[5]   =    " H ";

// しかし、挿入、消去などの操作の後 ; マップに 5 がまだ存在するかどうかわかりませんが、次のように変更できますか?:

a[5]   =   " G ";

// または iteraotr pos を定義する必要があります

pos = my_map.find(5);
if( pos !=  my_map.end())
{
 pos->second   =   " G ";
}

マップからキーと値のペアの値を変更できる他の方法はありますか? ありがとう!!!

4

3 に答える 3

4

存在するかどうかに関係なく値を設定する場合は、添字演算子を使用してください。

a[5] = " G ";

存在しない場合は、新しいマッピングが作成されます。これは、C++ 標準によって保証されています。

于 2012-06-25T15:52:34.330 に答える
2

標準マップには、マップに存在しない要素にインデックスを付けると、そのキーとデフォルトで構築された値との間に関連付けが作成されるという興味深い特性があります。5そのため、要素がマップ内のキーとして存在しない場合、その要素はa[5]存在し、空の文字列に関連付けられます。

C++11atは、キーがマップに存在しない場合にスローする新しいメソッドを追加しました。これにより、 へのインデックス付けが可能になりますconst map

于 2012-06-25T15:52:58.327 に答える
1

の例でfind()は、返されたイテレータを介して値を変更できます。

pos->second = " G ";

operator[]現在存在しない場合は新しいエントリが作成されるため、既に存在する場合にのみ変更する場合は、このアプローチを使用する必要があります。追加または変更する場合は、 を使用しますoperator[]

于 2012-06-25T15:53:35.963 に答える