これが私が実行しているコードで、g++4.6と-std=c++0x
std::unordered_map<int, int> um;
um.insert(std::make_pair(42, 43));
um.insert(std::make_pair(342, 343));
um.insert(std::make_pair(142, 143));
um.insert(std::make_pair(242, 243));
for(auto e : um)
std::cout << e.first << std::endl;
これは印刷します:
242
342
42
142
um.begin()->firstこれで、またはで242にアクセスできますum.begin(0)->first。342はを使用してアクセスできますum.begin(1)->first。しかし、um.begin(2)->firstまたはum.begin(3)->firstプログラムをクラッシュさせます。異なる番号でアクセスできましたum.begin(2)->first。私はその行動を自分自身に説明することはできません。um.begin(int)間違って使用しますか?