【发布时间】:2019-07-19 15:03:15
【问题描述】:
我在映射中插入键、值,但是无论我在第 14 行更改值,该值始终等于 0,第 13 行的“if”语句从未执行过。 这是代码,编译器是 ubuntu 18.04 中的 gcc 7.4.0
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n;
cin>>n;
int a;
map<int, int> num;
map<int, int>::iterator p;
for (int i = 0;i < n; i++){
cin>>a;
if(num[a]) num[a]++;
else num.insert(make_pair(a,1));
}
for (p=num.begin();p!=num.end(); p++)
cout<<p->first<<" "<<p->second<<endl;
return 0;
}
当我输入时
6
10 1 10 20 30 20
对于程序,我期望输出
1 1
10 2
20 2
30 1
但它正在输出
1 0
10 0
20 0
30 0
【问题讨论】:
-
操作员
[]forstd::map将创建键值对(如果它不存在)。因此,您所有的insert呼叫都失败了(您很乐意忽略)。我会尝试找到一个副本。
标签: c++