たとえば、次のように定義されているstd::mapタイプがあるとします。
std::map<int, int>* someMap;
ポインターを使用していなかった場合は、インデックス演算子を使用して要素を追加するだけで済みます。ただし、この場合、ポインタがあるので、インデックス演算子を使用して挿入する正しい方法は次のとおりです。
(*someMap)[someIndex] = someValue;
たとえば、次のように定義されているstd::mapタイプがあるとします。
std::map<int, int>* someMap;
ポインターを使用していなかった場合は、インデックス演算子を使用して要素を追加するだけで済みます。ただし、この場合、ポインタがあるので、インデックス演算子を使用して挿入する正しい方法は次のとおりです。
(*someMap)[someIndex] = someValue;
はい。はクラスoperator []
に対してオーバーロードされています。Map
オブジェクトと直接使用する必要があります。
必ず何かを指さしてください。 someMap
それ以外の場合は、スタック上のガベージから派生した意味のないアドレスが含まれているだけです。ヒープから割り当てる例を次に示します。
std::map<int, int>* someMap = new std::map<int, int>();
そしてそれが終わったら、はい、あなたはそれを使用する方法で正しいです:
(*someMap)[someIndex] = someValue;
必ず後片付けをしてください
delete someMap;
はい、コードは問題ありません。
(*someMap)[someIndex] = someValue;