Я столкнулся с проблемой здесь. Я использую C ++ multiset. Это тестовый файл.
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);
}
}
}
Я вставляю все имена в myset (независимо от выигрышей / проигрышей / ничьих) в моем последнем утверждении else. Но мне нужны только имена тех матчей, которые выиграли / сыграли вничью.
Те имена, чьи совпадения проиграны, не будут включены в myset. В приведенном выше тестовом файле потеряно только одно совпадение (1-2), и я хотел удалить «Бен». Как я могу это сделать?
Я пытался использовать myset.erase (), но я не уверен, как заставить его указать на Бен и удалить его из myset.
Любая помощь очень ценится.
Спасибо.