0

たとえば、次のように定義されているstd::mapタイプがあるとします。

std::map<int, int>* someMap;

ポインターを使用していなかった場合は、インデックス演算子を使用して要素を追加するだけで済みます。ただし、この場合、ポインタがあるので、インデックス演算子を使用して挿入する正しい方法は次のとおりです。

(*someMap)[someIndex] = someValue;
4

3 に答える 3

3

はい。はクラスoperator []に対してオーバーロードされています。Mapオブジェクトと直接使用する必要があります。

于 2012-11-28T15:52:22.053 に答える
1

必ず何かを指さしてください。 someMapそれ以外の場合は、スタック上のガベージから派生した意味のないアドレスが含まれているだけです。ヒープから割り当てる例を次に示します。

  std::map<int, int>* someMap = new std::map<int, int>();

そしてそれが終わったら、はい、あなたはそれを使用する方法で正しいです:

  (*someMap)[someIndex] = someValue;

必ず後片付けをしてください

  delete someMap;
于 2012-11-28T15:50:56.047 に答える
0

はい、コードは問題ありません。

(*someMap)[someIndex] = someValue;
于 2012-11-28T15:50:32.163 に答える