我希望在遍历 map 时增加一对的两倍。
map 是这样创建的:
typedef pair<string,string> Name;
map<Name,double> paidEmploy;
在我从 cin 获取所有内容并将其添加到 map 后,如果名称已经在 map 中(很明显),它不会添加对象。如果插入失败,我将遍历 map 以查找已插入名称的位置。然后我想访问 map 的两倍以增加下一个数量。我如何访问它?
这是我目前所做的:
map<Name,double> paidEmploy;
string line, fn, ln, date;
double paid;
while(getline(cin, line)){
istringstream(line) >> date >> fn >> ln >> paid; // assume all lines are correct
if(paidEmploy.insert(pair<pair<string,string>,double>(pair<string,string>(fn,ln),paid)).second == false){
for(auto it = paidEmploy.begin(); it != paidEmploy.end(); it++){
if(it->second.first == fn && it->second.second == ln){
it->third += paid;
break;
}
}
}
}
最佳答案
在你的情况下,你可以简单地做:
paidEmploy[std::make_pair(fn, ln)] += paid;
或者如果你真的想使用插入结果:
auto p = paidEmploy.insert(pair<pair<string, string>, double>(std::make_pair(fn, ln), paid));
if (p.second == false) {
p.first.second += paid;
}
关于c++ - 如何在 C++11 中访问 double 的 pair<pair<string,string>,double>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213319/