我有以下代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <set>
#include <map>
#include <algorithm>
int main() {
std::map<std::string,int> m;
int a,b,c;
std::string d;
std::cin >> a;
for(int i=0;i<a;i++){
std::cin >> b;
std::cin >> d;
std::cin >> c;
if (b == 1) {
std::cout << 1 << "n";
if (m[d] == 0){
std::cout << "md==0n";
m.insert(std::make_pair(d, c)); // Line 23
std::cout << d << " " << c << " " << m[d] << " Insertedn";
} else {
std::cout << "Uvelichn";
m[d] += c;
}
}
}
return 0;
}
似乎第23行没有影响m变量。但是当我显式地运行func时,它工作得很好。
int main()
{
map<string,int> m;
m.insert(make_pair("t", 1));
cout<<m["t"];
return 0;
}
我尝试用固定值启动make_pair,但尽管如此。我希望它能像平常一样工作,只要插入一对就可以了。
BTW,这是一个任务从Hackerrank, Maps-STL (https://www.hackerrank.com/challenges/cpp-maps/problem?isFullScreen=true)
usingm[d]
已经在map中插入默认元素所以下一步m.insert(make_pair(d, c));
什么都不做
if(m[d]==0){
cout<<"md==0n";
m.insert(make_pair(d, c));
cout<<d <<" "<<c<<" "<<m[d]<<" Insertedn";
} else {
cout<<"Uvelichn";
m[d] += c;
}
可以是(去掉debug打印)
m[d] += c;