ここで問題が発生しました。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 で負けた試合が 1 つだけあり、"Ben" を削除したかったのです。どうやってやるの?
myset.erase() を使用しようとしましたが、Ben をポイントして myset から削除する方法がわかりません。
どんな助けでも大歓迎です。ありがとう。