私はstd::map
このようなものを持っています:
map<wstring,int> Scores;
プレイヤーの名前とスコアを保存します。誰かがスコアを取得したとき、私は単純に次のことを行います。
Scores[wstrPlayerName]++;
キーを持つ要素がマップにない場合、要素はwstrPlayerName
作成されますが、増分の前にゼロまたはnullに初期化されますか、それとも未定義のままですか?
インクリメントする前に、要素が毎回存在するかどうかをテストする必要がありますか?
プリミティブ型のものは作成時に常に未定義だと思っていたので、疑問に思いました。
私が次のようなものを書いた場合:
int i;
i++;
コンパイラは、iが未定義であり、プログラムを実行すると通常はゼロではないことを警告します。