6

STL コンテナーを使用する場合、デフォルトのアロケーターによって割り当てられた int がゼロ化されているかどうかがわかりません。次のコードは、質問に対して「はい」を示します。

#include <map>
#include <iostream>

int main() {
  using namespace std;
  map<int, int> m;
  cout << m[1234] << endl;
}

これを確認した文書はないので、私はそれを当然のこととは考えていません。

4

4 に答える 4

6

の実装内でstd::map::operator[]、要素がインデックスで見つからない場合、新しい要素が挿入されて返されることがわかります。

ReturnValue = this->insert(where, make_pair(key_value, mapped_type()));

mapped_typeあなたの場合、2番目のタイプはどこですかint。はい、0として挿入されるため、デフォルトで に初期化されmapped_type()ます。

于 2012-03-06T13:36:03.287 に答える