これが私が実行しているコードで、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)
間違って使用しますか?