- for循环里写vector迭代器
for (auto i = v.begin(); i != v.end();i++ ) ×迭代器如果指向最后一个元素,再++就会出错
for (auto i = v.begin(); i != v.end(); ) √
v.erase(i);//(错误) 这样i就被直接清除掉了 再加加就会出错
i = v.erase(i);//(正确)删除元素后,后面元素自动往前移,不用挪动指针
while (!v.empty())
{
int no;
map<string, int>::iterator it = m.find(v[0].name);
no = it->second;
//cout << no << endl;
for (auto i = v.begin(); i != v.end(); )
{
if (m[i->name] == no && times >= (i->s))
{
i->waitingtime = times - (i->s);
sumwaitingtime += i->waitingtime;
times += (i->rtime);
cout << i->name << endl;
i = v.erase(i);//(正确)删除元素后,后面元素自动往前移,不用挪动指针
}
else i++;
}
}
-
四舍五入
printf("%.1f\n", 1.0 * sumwaitingtime / N);
-
map中如果没有找到就会返回0
如m["不存在"]==0