以下是C++代码,用于计算杂志中的单词数.我试图添加单词,如果它的值不存在,如果它存在,增加它.
unordered_map<string,int>hash;
vector<string> magazine(m);
for(int i = 0;i <m;i++)
{
cin >> magazine[i];
if(hash[magazine[i]]>0)
hash[magazine[i]]++;
else
hash.emplace(magazine[i],1);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试输出时,所有杂志键都将0作为值.知道为什么吗?
我从阅读转换int到long long int正在促销,因此认为不应该有任何问题,因为没有数据丢失,不像反之亦然转换.
但是当我将两个int大的值相乘并存储它时long long int,它会显示负数.
例如:
int a=1000000, b=1000000;
long long int c=a*b;
cout<<c;
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我一个负值.有人可以解释原因吗?