这是我正在运行的代码,使用 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)
错了吗?