我无法访问unordered_map的密钥。以下是我的代码:
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
vector<int> nums = {1,2,3,4,5};
int k = 2;
unordered_map<int,int> mp;
for(auto num : nums)
mp[num]++;
for(auto it : mp)
cout << it.first;
cout << endl;
for(auto it : mp)
cout << mp[it.first+k];
return 0;
}
我期望输出是
54321
00111
因为键值“ 7”,“ 6”,“ 5”,“ 4”,“ 3”为“ 0”,“ 0”,“ 1”,“ 1”,“ 1”。但是输出是
54321
0000
请注意,这里只有四个“ 0”。我很困惑,不知道机制是什么。有人可以帮我吗?预先谢谢你。
程序具有未定义的行为,因为在此之后为等于5的mp[it.first+k]
添加新元素it.first
的迭代器是无效的。