以下是我正在運行的代碼,使用g ++ 4.6和-std=c++0x
的std :: unordered_map ::開始(INT n)的行爲
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
現在我可以訪問242與um.begin()->first
或um.begin(0)->first
。 342可以使用um.begin(1)->first
訪問。但um.begin(2)->first
或um.begin(3)->first
使程序崩潰。通過不同的號碼,我可以訪問um.begin(2)->first
。 我無法向自己解釋這種行爲。我是否使用um.begin(int)
錯誤?
我很懷疑'int'被使用。它更可能是引用'std :: size_t'的'size_type'內部typedef。 – 2012-04-26 15:30:08
@MatthieuM。你是對的。但它並沒有太大的變化 – TeaOverflow 2012-04-26 16:16:43