我在这里遇到了一个问题。我正在使用 C++ 多重集。这是测试文件。
Score: 3-1
Ben
Steven
Score: 1-0
Ben
Score: 0-0
Score: 1-1
Cole
Score: 1-2
Ben
我正在使用 while 循环和 ifstream (fin1) 从上面的测试文件中读取。
multiset<string, less<string> > myset;
while(!fin1.eof())
{
fin1 >> scoreName;
if(scoreName == "Score:")
{
//calculates number of matches played
}
else
{
goalCheck = scoreName.substr(1,1);
if(goalCheck == "-")
{
string lGoal, rGoal;
lGoal = scoreName.substr(0,1);
rGoal = scoreName.substr(2,1);
int leftGoal, rightGoal;
leftGoal = atoi(lGoal.c_str());
rightGoal = atoi(rGoal.c_str());
if(leftGoal > rightGoal) //if team wins
{
//some computations
}
else if(leftGoal < rightGoal) //if team loses
{
//computations
}
else if(leftGoal == rightGoal) //if team draws
{
//computations
}
else
{
myset.insert(myset.begin(), scoreName);
}
}
}
我在最后一个 else 语句中将所有名称插入到 myset 中(无论输赢/平局)。但我只需要那些获胜/平局的比赛的名字。
那些匹配失败的名字将不会包含在 myset 中。在上面的测试文件中,只有一场比赛输了(1-2),我想删除“Ben”。我怎样才能做到这一点?
我尝试使用 myset.erase(),但我不确定如何让它指向 Ben 并将其从 myset 中删除。
任何帮助深表感谢。谢谢。